加入没有值的SQL表

时间:2015-03-31 22:38:31

标签: mysql

我正在做一个表连接

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来纠正这个问题?

2 个答案:

答案 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;