MySQL的新知識:
之前數據庫沒學好,不知道LEFT JOIN ON后邊可以加條件
首先業務是有個A表,然后會依據A表信息來在B表生成一條對應數據,
操作時候展示A表數據,如果B表已經有對應數據,顯示數據,如果沒有,則可以新增數據。
B表中有保存A表的ID。
SELECT
a.id AS "a.id",
a.CODE AS "a.code",
b.id AS "b.id",
b.CODE AS "b.code",
b.a_id AS "b.aID"
FROM
a
LEFT JOIN b ON b.a_id = a.id
查詢結果:
現在要求是要B的數據下游會操作,如果數據有問題就會作廢掉,這里就用code來標識,當code為1時,就說明這條數據是作廢的。
在上游的顯示中,就是A依然有數據,但B為空。
最開始在where條件中寫,SQL:
SELECT
a.id AS "a.id",
a.CODE AS "a.code",
b.id AS "b.id",
b.CODE AS "b.code",
b.a_id AS "b.aID"
FROM
a
LEFT JOIN b ON b.a_id = a.id
WHERE
b.CODE = '0'
查詢結果:
很明顯就數據丟了一條,達不到目的,突然間一個思路,where條件能否放到LEFT JOIN ON的后邊,試了一下,效果有了:
SELECT
a.id AS "a.id",
a.CODE AS "a.code",
b.id AS "b.id",
b.CODE AS "b.code",
b.a_id AS "b.aID"
FROM
a
LEFT JOIN b ON b.a_id = a.id
AND b.CODE = '0'
查詢結果:
還是第一次意識到LEFT JOIN ON后邊的條件可以用AND來實現多個