这个SELECT查询有什么问题?没有错误,没有结果

时间:2014-11-05 20:07:01

标签: mysql select

被这个拒绝返回结果的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天。选择查询只是我将要运行的删除查询的前身。

2 个答案:

答案 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