我真的对MySQL命令的下一个行为感到困惑。如您所见,我的SQL语句非常简单。
SQL语句:
SELECT *
FROM TABLE_1
WHERE POSITION_ID NOT IN (
SELECT GROUP_CONCAT(ID_OBJECT)
FROM TABLE_2
)
此部分:
SELECT GROUP_CONCAT(ID_OBJECT)
FROM TABLE_2
还给我:5636,4697,2174,5559,3180,4102,4192,7598,5922,7432
但是当我检查SQL语句时,我看到具有POSITION_ID = 3180的记录。怎么发生的?不应有这样的记录,因为我们排除了它。我做错了什么?也许我错过了一些符号?
编辑:
我认为问题可能出在GROUP_CONCAT
命令中。可能会将结果放在这样的撇号中,这不是我想要的:
SELECT *
FROM TABLE_1
WHERE POSITION_ID NOT IN ("5636,4697,2174,5559,3180,4102,4192,7598,5922,7432")
我需要这样的代码:
SELECT *
FROM TABLE_1
WHERE POSITION_ID NOT IN (5636,4697,2174,5559,3180,4102,4192,7598,5922,7432)
答案 0 :(得分:2)
GROUP_CONCAT
函数将返回一个字符串值,如果NOT IN
对GROUP_CONCAT(ID_OBJECT)
的使用将与字符串结果进行比较。
您可以尝试将NOT IN
与子查询一起使用。
SELECT *
FROM TABLE_1
WHERE POSITION_ID NOT IN (
SELECT ID_OBJECT
FROM TABLE_2
)