【问题标题】:mysql sql distinct with join two tablemysql sql distinct与连接两个表
【发布时间】:2012-05-14 09:42:14
【问题描述】:

我有两个mysql表,表event和表eventvenue

我想从场地获得其他活动。

-------------表event:---------------

id_e
id_event
title
content

------------- 表eventvenue:--------------

id_ev
id_event_ev
id_location_ev

我使用 join 从场地获取其他事件:

SELECT * 
FROM eventvenue 
JOIN event ON eventvenue.id_event_ev = event.id_event 
WHERE eventvenue.id_location_ev=1

结果是:

id_ev id_event_ev id_location_ev id_e id_event 标题内容 ----- ----------- -------------- ---- -------- ------ -- ---------- 1 2 1 2 2 事件A aaaaaaaaaaaa 2 2 1 2 2 事件A aaaaaaaaaaaa 1 4 1 4 4 事件B bbbbbbbbb 1 9 1 9 9 事件C cccccccc 3 5 1 5 5 事件5 555555

输出包含两行具有相同的id_event_ev/id_event2

如何仅显示每个位置的不同事件 ID?像这样:

id_ev id_event_ev id_location_ev id_e id_event 标题内容 ----- ----------- -------------- ---- -------- ------ -- ---------- 1 2 1 2 2 事件A aaaaaaaaaaaa 1 4 1 4 4 事件B bbbbbbbbb 1 9 1 9 9 事件C cccccccc 3 5 1 5 5 事件5 555555

注意:id_ev 不重要。

【问题讨论】:

    标签: mysql sql join distinct


    【解决方案1】:

    试试这个代码

    SELECT * 
    FROM eventvenue 
    JOIN event ON eventvenue.id_event_ev = event.id_event 
    WHERE eventvenue.id_location_ev=1
    GROUP BY event.id_event, eventvenue.id_event_ev
    

    【讨论】:

      【解决方案2】:

      实际上,您只想忽略id_ev,或者获取它的最低值。

      这让你需要

      SELECT DISTINCT
      
      -- maybe drop next line
      MIN(id_ev) AS id_ev, 
      -- maybe drop next line
      
      id_event_ev, id_location_ev, id_e, id_event, title, content 
      
      FROM eventvenue 
      INNER JOIN event ON eventvenue.id_event_ev = event.id_event 
      WHERE eventvenue.id_location_ev=1
      
      -- Drop next line if you dropped line above
      GROUP BY eventvenue.id_ev
      

      【讨论】:

      • 我试试这个代码,它也可以工作:D 好主意“获得最低值”:D
      猜你喜欢
      • 2011-04-27
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多