当数据库中存在值时,输出中显示的 SQL 空值



我正在从数据库中的两个不同表中提取值。我应该只得到一行输出,但我得到两行。其中一行是完美的,但另一行有一个空值,显然不应该为空。我的代码如下:

SELECT DISTINCT DEATH_RATE.COUNTRY_NAME, 
                DEATH_RATE.DATA_YEAR,  
                DEATH_RATE.DEATH_RATE_VALUE,
                TIME_TO_EXPORT.EXPORT_VALUE
FROM DEATH_RATE, TIME_TO_EXPORT 
WHERE TIME_TO_EXPORT.COUNTRY_NAME IN ('Belgium')
AND TIME_TO_EXPORT.COUNTRY_NAME = DEATH_RATE.COUNTRY_NAME
AND DEATH_RATE.DATA_YEAR = 2012 
AND DEATH_RATE.DATA_YEAR = DEATH_RATE.DATA_YEAR ;

我得到的输出如下:

 COUNTRY_NAME   DATA_YEAR   DEATH_RATE   EXPORT_VALUE
1.Belgium         2012         423.5       9
2.Belgium         2012         423.5      null

第一行很好,只有这应该是输出。第二行和空值从何而来?

谢谢

查询的最后一个条件有点没用(当值不null时,条件总是true):

DEATH_RATE.DATA_YEAR = DEATH_RATE.DATA_YEAR

我想你打算:

TIME_TO_EXPORT.DATA_YEAR = DEATH_RATE.DATA_YEAR

(我假设字段具有相同的名称)因此,在您的选择中,您将获得与"比利时"相关的所有TIME_TO_EXPORT记录,无论DATA_YEAR的价值如何。

所以你的查询变成:

SELECT DISTINCT DEATH_RATE.COUNTRY_NAME, 
                DEATH_RATE.DATA_YEAR,  
                DEATH_RATE.DEATH_RATE_VALUE,
                TIME_TO_EXPORT.EXPORT_VALUE
FROM DEATH_RATE, TIME_TO_EXPORT 
WHERE TIME_TO_EXPORT.COUNTRY_NAME IN ('Belgium')
AND TIME_TO_EXPORT.COUNTRY_NAME = DEATH_RATE.COUNTRY_NAME
AND DEATH_RATE.DATA_YEAR = 2012 
AND TIME_TO_EXPORT.DATA_YEAR = DEATH_RATE.DATA_YEAR ;

将最后一行替换为:

AND TIME_TO_EXPORT.DATA_YEAR = DEATH_RATE.DATA_YEAR;
<</div> div class="one_answers">

DEATH_RATE TIME_TO_EXPORT没有正确连接。 当然,最后一行没有任何意义。

最新更新