SQL Join:如何显示第一个表数据甚至第二个表条件为false

时间:2019-02-19 01:18:59

标签: sql postgresql left-join

即使第二个表条件为假,我也要继续显示我的第一个表数据。

表1

---------------------------
  ID  | Name
---------------------------
  1   | Panda
  2   | Tiger
---------------------------

表2

---------------------------
  ID  | Date       | Weight
---------------------------
  1   | 2019-02-01 |   30
  1   | 2019-02-10 |   31
---------------------------

当我要求日期='2019-02-18'和ID = 1的数据时,我期望这样的数据

-------------------------------------
  ID  | Name  | Date       |  Weight
-------------------------------------
  1   | Panda | 2019-02-18 |    0
-------------------------------------

1 个答案:

答案 0 :(得分:1)

您是否正在寻找一个简单的LEFT JOIN,如下所示?

SELECT t1.id, t1.name, date '2019-02-18', COALESCE(t2.weight, 0) weight
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id AND t2.date = date '2019-02-18'
WHERE t1.id = 1

LEFT JOIN可选地搜索具有给定日期标准的table2中的记录。如果没有匹配的记录,则t2.weightNULLCOALESCE()遇到这种情况,并返回0