在其他表中查找不匹配的mysql条目

时间:2012-07-20 11:48:36

标签: php mysql join

我在mysql中有两个表,结构如下:

Events: id
Events_artists: event_id, more columns

我想在event_artists表中找到与事件中的id不匹配的event_ids。

到目前为止我唯一想到的是:

SELECT * FROM events,events_artists WHERE events_artists.event_id!=events.id

然而,这是垃圾,基本上会返回整个表格。

有谁知道如何解决这个问题?

谢谢!

查尔斯

解决方案,感谢Andrzej Bobak

从events_artists中选择*,其中event_id不在(从事件中选择id)

2 个答案:

答案 0 :(得分:3)

这种做法怎么样?

select * from events_artists where event_id is null or event_id not in (select id from events)

答案 1 :(得分:1)

select * from events_artists a
left join events b on a.id = b.id
where b.id is null

您的方法使用笛卡尔积,将每一行相互连接起来。因此,您的where条件只会过滤包含不匹配行的结果,但由于笛卡尔积,这将会很多