sql 查詢:按基準表求無重復結果
數據庫中經常需要處理多表連接查詢的問題。當想要查詢以某張表為基準,并且避免出現重復結果時,可以使用適當的 sql 語句。
考慮以下場景:
我們有兩個表:a 和 b。a 表有 sid(學生 id)和 name(姓名)字段,而 b 表有 sid 和 tracking_number(追蹤號)字段。
為了查詢以 a 表為基準,只保留每個學生唯一的結果,我們可以使用以下 sql 語句:
select * from a left join ( select sid, max(tracking_number) from b group by sid ) b on a.sid = b.sid
這個語句使用 left join,將 a 表與一個子查詢連接起來。子查詢的功能是為每個學生找到最新的 tracking_number。通過使用 max 函數,我們可以確保只有最新的追蹤號被保留。
需要注意的是,有些數據庫不需要 max 函數,而可以直接使用 tracking_number 字段。請根據你的數據庫版本進行調整。
如果需要使用函數,并且想要同時保留其他信息,可以使用以下語句:
SELECT a.*, b.tracking_number, b.is_cancel FROM a LEFT JOIN ( SELECT MAX(id) id, sid FROM b GROUP BY sid ) x ON a.sid = x.sid LEFT JOIN b ON x.id = b.id
這個語句首先使用 max 函數找到每個學生的最新 id,然后通過連接 b 表,將其他信息帶出來。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END