为什么此查询会在列中返回值

时间:2016-06-29 02:52:21

标签: sql

我有以下查询:

SELECT 
  a.id, 
  c.c_date 
FROM table_a a , 
  table_c c
 WHERE 
  a.id = c.id AND 
  a.id IN (SELECT id from table_c where c_date is null);

我有两个表,table_atable_c

我加入这两个表,但是后来使用IN语句只显示其中table_c并且c_date列设置为null的id。 / p>

此查询会返回id, and c_date values, and some of the c_date values are not null这怎么可能?

我认为在我的子查询中我只选择了具有空c_dates的id?

2 个答案:

答案 0 :(得分:2)

这应该在没有子查询的情况下工作,假设您不想返回null个日期。请注意使用join

SELECT a.id, 
     c.c_date 
FROM table_a a 
    JOIN table_c c ON a.id = c.id  
WHERE c_date is null;

如果没有样本数据和预期结果,很难回答您的具体问题。您可能在table_c中有多条与id中的table_a字段匹配的记录。

答案 1 :(得分:0)

使用此示例更容易解释:

<强>表-A

id  col_x  col_...
1   
2   

<强> table_c

id  c_date       col_m    col_...
1   null
1   03/14/2016
2   04/14/2016

您应该考虑在结果集上检查您的意图。将您的查询更改为@sgeddes答案是一种方式。