首页 > 解决方案 > 在 JOIN 子句中使用 WHERE 时也显示空值

问题描述

在以下 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;

提前致谢 。

标签: sql

解决方案


将右侧表格条件从 移动WHEREON以获得真实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 中,左连接返回常规的内连接结果。)


推荐阅读