选择除查询中两个表匹配的所有行

时间:2013-09-06 14:00:04

标签: php mysql sql database

我正在尝试做什么

我有两个表,一个用于事件,另一个表示是否已经看到每个事件ID。我想创建一个连接 event.id seen.eventid 上的两个表的查询。但是,我只想返回 not 的行,按照最近的顺序排序。

我现在拥有的

这是用于返回已经看过的所有事件的查询:

SELECT *
FROM `events`
JOIN `seen` ON (`seen`.`event_id`=`event`.`id`)
    //This is not part of the question but I might as well paste the entire code
    //WHERE `user_id`='34'
    //AND (`meta_id`='45' OR `meta_id`='37' OR `meta_id`='43')
GROUP BY `event_id`
ORDER BY `event`.`date` DESC

如何撤消查询,以便返回的是event中与此查询 匹配的行?

1 个答案:

答案 0 :(得分:2)

我们不知道你的桌子结构,所以我只是在猜...

SELECT *
  FROM events e
  LEFT
  JOIN seen s
    ON s.event_id = e.id)
   AND s.user_id=34
 WHERE e.meta_id IN (45,37,43)
   AND s.event_id IS NULL
 GROUP 
    BY e.event_id
 ORDER 
    BY e.date DESC