MySQL 左關聯右表條件查詢


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來實現多個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM