在JOIN子句中使用WHERE时也显示空值

时间:2018-05-08 07:09:47

标签: sql

需要关于以下SQL查询的帮助。我有一个客户列表,每个人的进度存储在验证表中。我需要在游标中使用以下语句,并使用record_id来获取该确切日期,但它将仅返回客户端和现有值的小时数。已使用LEFT JOINLEFT OUTER JOIN。没有WHERE子句可以很好地工作,但我会获取混合结果,但不会有帮助。

SELECT 
    CLI.id client_id
   ,CLI.name client_name
   ,VLD.number_of_hours number_of_hours 
FROM 
   client CLI 
LEFT JOIN 
   validation VLD 
ON 
   CLI.id = VLD.client_id
WHERE 
   VLD.record_id = 392;

提前致谢。

1 个答案:

答案 0 :(得分:1)

将右侧表格条件从WHERE移至ON以获得真正的LEFT JOIN结果。

SELECT 
    CLI.id client_id
   ,CLI.name client_name
   ,VLD.number_of_hours number_of_hours 
FROM 
   client CLI 
LEFT JOIN 
   validation VLD 
ON 
   CLI.id = VLD.client_id
AND
   VLD.record_id = 392;

(在WHERE中,左连接返回常规内连接结果。)