如何选择表#1中的结果按表#2中的结果过滤?

daG*_*vis 0 mysql sql join filter

好吧,我有两张桌子:

  • events:id,title,description
  • trip_events:id,event_id(指向events.id)

我需要从名为table的表中选择结果events.

SELECT *
FROM `events`
Run Code Online (Sandbox Code Playgroud)

就这么简单吧?

我需要实现的是,我需要从中选择结果events,但排除那些中的行trip_events(如果events.id!= trip_events.event_id排除).

这是一个例子:

events:

  • id:5,
  • id:6,
  • id:7,
  • id:8;

trip_events:

  • event_id:6,
  • event_id:8;

使用此数据集,仅返回id为5和的事件6.

这该怎么做?

我试过这样的:

SELECT *
FROM `events`
JOIN `trip_events`
ON (`trip_events`.`event_id` = `events`.`id`)
WHERE `trip_events`.`event_id` != `events`.`id`
Run Code Online (Sandbox Code Playgroud)

但它没有用.

Alb*_*nbo 5

select * from events where id not in
(select event_id from trip_events)
Run Code Online (Sandbox Code Playgroud)

编辑:
作为旁注,ON条件可以被认为是一个WHERE条件.查询结果与以下内容相同

SELECT *
FROM `events`
JOIN `trip_events`
ON 1 = 1
WHERE (`trip_events`.`event_id`  = `events`.`id`)
AND   (`trip_events`.`event_id` != `events`.`id`)
Run Code Online (Sandbox Code Playgroud)

猜猜你为什么没有得到任何结果!