被这个拒绝返回结果的MySQL查询所困扰:
select entity_id
from customer_entity
where entity_id NOT IN (SELECT sfo.customer_id
FROM sales_flat_order sfo);
如果你将这两个陈述分开,它们就可以独立工作:
select entity_id from customer_entity;
会返回...... 1,2,3,4,5,6
和
select sfo.customer_id FROM sales_flat_order sfo;
将返回...... 1,1,2,5,6
返回相同的数据类型 - INTEGER(10) - 以及许多相同的值。
我假设问题可能与两个名称不相同的列有关,但此时我还不确定。
更多信息: 确实有很多空订单。 sales_flat_order表仅包含45天的数据,而customer_entity表包含5或6年的数据。我试图将customer_entity表缩小到45天。选择查询只是我将要运行的删除查询的前身。
答案 0 :(得分:1)
假设customer_entity
中的记录在sales_flat_order
中没有相关记录,那么这应该是您要找的:
select
entity_id
from
customer_entity
where
not exists (SELECT
1
FROM
sales_flat_order sfo
WHERE
sfo.customer_id = entity_id);
答案 1 :(得分:-2)
编写查询的另一种方法是使用左连接运算符。
SELECT entity_id
FROM customer_entity
LEFT JOIN sales_flat_order sfo
ON entity_id = sfo.customer_id
WHERE entity_id IS NULL