我在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)
答案 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
条件只会过滤包含不匹配行的结果,但由于笛卡尔积,这将会很多