NOT IN操作符对mysql中的非主键值不起作用


NOT IN Operator is not working for non-primary key values in mysql

我读过很多关于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)