[英]How to check if an ID exists in the result of a sub-query?
假设我有以下查询来列出人们拥有的房屋的平均值:
SELECT PERSON.NAME, AVG
FROM PERSON, (
SELECT HOUSE.PID AS PID, AVG(HOUSE.VALUE) as AVG
FROM HOUSE
GROUP BY PID
) HOUSES
WHERE PERSON.PID = HOUSES.PID OR PERSON.ID NOT IN (
SELECT PID
FROM HOUSE
)
该查询执行了我想要的操作,只是它不包括没有房屋的人,他们的房屋平均成本应为“ 0”。
这可能吗,还是我走了?
简单规则: 请勿在FROM
子句中使用逗号。 始终使用显式的JOIN
语法。 例如,在这种情况下,您需要一个LEFT JOIN
,但是不能表达它。
SELECT p.NAME, AVG_VALUE
FROM PERSON p LEFT JOIN
(SELECT PID , AVG(VALUE) as AVG_VALUE
FROM HOUSE
GROUP BY PID
) h
ON p.PID = h.PID;
如果要0
而不是NULL
, COALESCE(AVG_VALUE, 0) as AVG_VALUE
在外部查询COALESCE(AVG_VALUE, 0) as AVG_VALUE
。
您应该使用left join
,这样,出现在人员表中但在房屋表中没有对应记录的记录将使房屋列的null无效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.