假设我有下表名为FRUITSALAD:
| ID | FRUIT | SALAD |
|----|--------|--------------|
| 1 | apple | apple,orange |
| 2 | orange | pear,banana |
| 3 | banana | apple |
| 4 | grape | apple,grape |
| 5 | pear | |
| 6 | | apple,pear |
注意:SALAD列包含任意数量的以逗号分隔的水果。
如何选择FRUIT不在SALAD中的ID? ( 第2,3,5行/第6行 )
我的第一个想法是试试这个,但它返回了水果存在的所有行:
SELECT id FROM fruitsalad WHERE fruit NOT IN (salad)
如果可能的话,我希望在没有连接或嵌套子查询的情况下执行此操作,但我会感谢任何完成它的建议。提前谢谢!
答案 0 :(得分:1)
在MySQL中,您可以使用find_in_set()
:
select id
from fruitsalad
where find_in_set(fruit, salad) = 0;
要处理第6行,您可能需要:
select id
from fruitsalad
where find_in_set(fruit, salad) = 0 and
fruit is not null and fruit <> '';