我有这样的代码:
SELECT *
FROM table1
WHERE integer NOT IN (
SELECT varchars FROM table2 WHERE id = 1)
varchars
由以逗号分隔的数字组成(1,2,3,4等)。此代码无法正常工作,因为括号中的SELECT
部分用引号{{1}括起来并且MySQL只读取第一个逗号之前的第一个整数。如何阅读这些引号或使代码有效?
' '
对我没有帮助,因为它导致错误#1064。
答案 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
所以查询只是自己执行(只要它返回一条记录)答案 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中的所有整数。