我正在做一个表连接
SELECT b.type AS business,
b.business AS business,
b.city AS city
FROM businesses as b
JOIN cities AS c ON n.city = c.id;
我的问题是我的桌子看起来像这样:
id type business city
1 1 2 4
2 4 5 2
3 2 3 0
因此有时行的值将为city的值为0.但是,如果city = 0,则使用表连接,结果中不会显示id 3。由于没有城市ID为0.有没有办法使用SQL来纠正这个问题?
答案 0 :(得分:1)
正如eggyal建议的那样,您的查询可能如下所示:
SELECT b.type AS business,
b.business AS business,
CASE WHEN c.city IS NULL THEN 'N/A' ELSE c.city END AS city
FROM businesses as b
LEFT JOIN cities AS c ON b.city = c.id;
答案 1 :(得分:1)
使用CASE语句有效,但我认为COALESCE更清晰。
SELECT b.type AS business,
b.business AS business,
COALESCE(c.city,'N/A') AS city
FROM businesses as b
LEFT JOIN cities AS c ON b.city = c.id;
正如eggyal所说,最好使用NULL
值,但如果您使用零,则可以添加NULLIF
SELECT b.type AS business,
b.business AS business,
COALESCE(NULLIF(c.city,0),'N/A') AS city
FROM businesses as b
LEFT JOIN cities AS c ON b.city = c.id;