例如,
我有表格 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>