MYSQL-获取A中的元素列表,只要它们在特定条件下与表B不匹配

时间:2019-01-30 08:33:00

标签: mysql join

例如,

我有表格 User UserColor

每个用户可以有多种颜色。

我想得到“除红色或蓝色以外的所有用户”的结果。

有没有一种方法可以不必执行两个嵌套选择?

Select * from User where id not in (
Select user_id from UserColor where  color = Red OR color = Blue )

我问这个是因为,我还需要过滤具有Letter = A属性的Users。

我可以简单地将Where字母= A放在末尾,但这意味着我需要对所有用户使用其颜色进行联接,然后过滤一小部分A。

所以我最好先用A过滤用户,然后再按颜色过滤。

因此,我正在执行以下操作:

Select * from User where id not in (
    Select user_id from UserColor 
    Left join User ON User.id = user_id 
    where color == Red OR color = Blue AND User.letter = 'A')
AND letter = 'A'

对接似乎是重复的,用字母A 过滤两次(一次是获取至少一次匹配的用户,另一次是获取不在该组中的所有用户) < / p>

0 个答案:

没有答案