我已经阅读了很多关于 NOT IN 运算符的问答,即 如果我使用 IN 运算符过滤 NULL 值和空格它不起作用为什么? 还有很多其他的,但问题是当我们对非主键使用 not in 运算符时,它不会返回响应。
SELECT * FROM temp_customers WHERE temp_customers.fk_my_id NOT IN (SELECT fk_my_id FROM customers)
其中 fk_my_id 是非主键并且可能是一个字符串。
请问有什么想法吗?
我已经阅读了很多关于 NOT IN 运算符的问答,即 如果我使用 IN 运算符过滤 NULL 值和空格它不起作用为什么? 还有很多其他的,但问题是当我们对非主键使用 not in 运算符时,它不会返回响应。
SELECT * FROM temp_customers WHERE temp_customers.fk_my_id NOT IN (SELECT fk_my_id FROM customers)
其中 fk_my_id 是非主键并且可能是一个字符串。
请问有什么想法吗?
在这里用逗号group_concat
分隔fk_my_id
SELECT * FROM temp_customers WHERE temp_customers.fk_my_id NOT IN
(SELECT GROUP_CONCAT(fk_my_id) FROM customers)
# when fk_my_id is INTEGER output (1,2)
SELECT * FROM temp_customers WHERE temp_customers.fk_my_id NOT IN
(SELECT GROUP_CONCAT("'",fk_my_id,"'") FROM customers)
# when fk_my_id is VARCHAR output ('1','2')
我猜你在查询中使用了错误的列:(SELECT fk_my_id FROM customers)
。它应该是您的客户表的 pkId
SELECT * FROM temp_customers
WHERE temp_customers.fk_my_id
NOT IN (SELECT pk_my_id FROM customers)