我有一个名为people的表
<表类>
id
名称
lastname
tbody><<tr>1 约翰道明> 2罗伯特。 威廉姆斯 3 彼得 沃克 表类>
不匹配任何行的顶级SQL查询将返回零行,这与返回NULL不同。这是有意义的,因为它可以让您区分没有这样的用户时SELECT email FROM users WHERE id=4
的结果和有用户但其电子邮件为空的结果。
但是,不返回任何行的子查询将按您期望的方式计算为NULL。所以你可以这样重写你的代码:
SELECT COALESCE( (SELECT id FROM people WHERE id = '4'), 0 );
COALESCE(x,y)
是CASE WHEN x IS NULL THEN y ELSE x END
的简写。在这种情况下,当x的表达式很长并且你不想写两次时,它是很有用的。