Re: [SQL ] MySQL LEFT JOIN 多條件的優先權

看板Database作者 (阿U)時間9年前 (2015/06/03 21:53), 9年前編輯推噓1(103)
留言4則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《JYHuang (夏天到了,冷不起來了說)》之銘言: : 資料庫名稱: MySQL : 內容/問題描述: : SELECT * FROM Table1 as a : LEFT JOIN Table2 as b : ON a.key = b.key AND b.id IN (1,2) : WHERE .... select * from Table1 as a left join Table2 as b on a.key=b.key where b.id in ( SELECT min(id) FROM Table1 as a left join Table2 as b on a.key=b.key and b.id in (1,2) where ... group by b.id ) : 我只想JOIN Table2 裡符合資料的第一筆 : 如果id = 1符合的話 join id = 1 的資料 : 不符的話才是id = 2 的 : 用何種方式會比較好呢? : 本來想再JOIN一次,然後 : SELECT * , (CASE b.id WHEN null THEN b.name ELSE c.name END) as name : FROM Table1 as a : LEFT JOIN Table2 as b : ON a.key = b.key AND b.id = 1 : LEFT JOIN Table2 as c : ON a.key = b.key AND b.id = 2 : WHERE ... : 不過Table2要抓出的欄位有十多個,這樣除了麻煩外好像也會拖累效率? : 而且要是id再多一個選項的話,條件會更天荒地老吧 @.@ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.223.38.18 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1433339589.A.FD7.html

06/03 21:59, , 1F
謝謝~
06/03 21:59, 1F

06/03 21:59, , 2F
不好意思沒說清楚,不過這個CASE裡兩個Table都是多筆
06/03 21:59, 2F

06/03 22:00, , 3F
資料的集合,所以這樣JOIN的話似乎會限縮Table2的範圍
06/03 22:00, 3F

06/03 22:00, , 4F
只能取到前幾筆
06/03 22:00, 4F
對不起我錯了... 我重新打了一個版本 關鍵在於我用min(或max) 看有沒有符合需求 你可以google 關鍵字 sql get top 1 of each group 或去stackoverflow問 那裡會較多人回答 ※ 編輯: sing10407 (61.223.38.18), 06/03/2015 22:32:31 ※ 編輯: sing10407 (61.223.38.18), 06/03/2015 22:50:11
文章代碼(AID): #1LRmR5_N (Database)
討論串 (同標題文章)
文章代碼(AID): #1LRmR5_N (Database)