MySQL:如何选择列A不在列B中的位置?

时间:2014-04-17 01:10:26

标签: mysql

假设我有下表名为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)

如果可能的话,我希望在没有连接或嵌套子查询的情况下执行此操作,但我会感谢任何完成它的建议。提前谢谢!

1 个答案:

答案 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 <> '';