外键值为零时,Mysql获取记录

时间:2014-08-26 13:13:30

标签: mysql sql select join null

我已经创建了一些表格如下。

countries

con_id   con_name
99       India
100      China

cities

cty_id     cty_name         country_id
1          Bangalore        99
2          Chennai          99
3          Delhi NCR        99

fees

f_id     st_dt        end_dt        city_id         country_id
1        2014-05-05   2014-05-05    1               99
2        2014-05-10   2014-05-10    2               99
3        2014-05-15   2014-05-15    3               99
4        2014-05-20   2014-05-20    0               100
5        2014-05-22   2014-05-22    0               100

我正在编写查询,按feescountry_id表中获取记录,如下所示。

SELECT * 
FROM fees as fe
JOIN countries as con
   ON con.con_id = fe.country_id
JOIN cities as cty
   ON cty.cty_id = fe.city_id

对于国家/地区india,它会从费用表和国家/地区3中提取第一个china条记录,而不是由于joinings提取任何记录。

所以我想要结果如null for city columnscorrect values for fees and country tables

请帮我解决这个问题。这项工作将更受赞赏。

1 个答案:

答案 0 :(得分:2)

您可以使用LEFT JOIN(或右,取决于连接顺序):

SELECT *
FROM countries c
LEFT JOIN fees f
  ON c.con_id = f.country_id
LEFT JOIN cities ci
  ON ci.country_id = c.con_id

左连接将填充在连接中没有匹配的列的空值。