[SQL ] left join表格後where的問題

看板Database (資料庫)作者 (藍色方塔)時間1年前 (2023/04/27 01:59), 編輯推噓1(102)
留言3則, 2人參與, 1年前最新討論串1/2 (看更多)
資料庫名稱:MariaDB 資料庫版本:10.4.21-MariaDB - mariadb.org binary distribution 內容/問題描述: 各位先進好,小弟目前有AB兩張關聯表: A有ID、name、description等欄位,B有ID、A_ID、title、content、del等欄位。 del是邏輯刪除的欄位,如果del為1的話代表這筆紀錄已經被使用者刪除看不到。 我希望當對應B的紀錄(del=1)或無對應紀錄(del is null)時僅顯示A, 若對應B的紀錄(del=0)時同時顯示A跟B。 有嘗試過下面這種寫法: SELECT A.*, B.* FROM A LEFT JOIN B ON A.ID = B.A_ID WHERE B.del = 0 OR B.del IS NULL 可以成功在沒有對應B紀錄時候撈出A,以及del=0時的A與B, 但是如果有一筆A只對應到del=1的B紀錄時,上面的寫法就撈不出這筆A了。 請教各位先進該如何修改我的SQL,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.40.112.111 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1682531943.A.203.html

04/27 09:02, 1年前 , 1F
試試看LEFT JOIN B ON A.ID = B.A_ID AND B.del = 0
04/27 09:02, 1F

04/27 09:02, 1年前 , 2F
WHERE B.ID IS NOT NULL OR B.del IS NULL
04/27 09:02, 2F

04/28 00:55, 1年前 , 3F
LEFT JOIN B 加上 AND B.del = 0就可以了,真的非常謝謝您
04/28 00:55, 3F
文章代碼(AID): #1aIMPd83 (Database)
文章代碼(AID): #1aIMPd83 (Database)