如何使用 SQL 查詢實現基準表無重復結果連接?

如何使用 SQL 查詢實現基準表無重復結果連接?

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
喜歡就支持一下吧
點贊11 分享