MySQL选择机箱

时间:2016-03-02 23:05:45

标签: mysql

我有这样的代码:

SELECT * 
FROM table1 
WHERE integer NOT IN (
SELECT varchars FROM table2 WHERE id = 1)

varchars由以逗号分隔的数字组成(1,2,3,4等)。此代码无法正常工作,因为括号中的SELECT部分用引号{{1}括起来并且MySQL只读取第一个逗号之前的第一个整数。如何阅读这些引号或使代码有效?

' '

对我没有帮助,因为它导致错误#1064。

2 个答案:

答案 0 :(得分:0)

SELECT * 
FROM table1 CROSS JOIN (SELECT varchars FROM table2 WHERE id = 1) AS t
WHERE NOT FIND_IN_SET(integer, t.varchars)
;
  • CROSS JOIN所以查询只是自己执行(只要它返回一条记录)
  • FIND_IN_SET搜索以逗号分隔的值列表。

答案 1 :(得分:0)

SELECT * FROM table1 LEFT JOIN table 2 ON FIND_IN_SET(integer,varchars) AND id =1 WHERE varchars IS NULL

这是Mihai在上述评论部分提到的正确答案。 Sebas的版本也可以工作,但是当table2中id = 1的varchars不存在时,它返回NULL,而它应该返回table1中的所有整数。