mysql多欄位查詢去重
阿新 • • 發佈:2018-11-11
當資料表有主鍵時,使用group by 獲取相同欄位的最大主鍵即可,code如下:
SELECT rn.*
FROM table_name rn
WHERE rn.id IN
(
SELECT MAX(r.id)
from table r
GROUP BY a,b,c,d
)
其中id為表table的主鍵,a,b,c,d為同時相同時去重的欄位。
當資料表沒有主鍵時,需要首先加上主鍵,使用以下加上主鍵
SELECT @row:[email protected]row +1 AS id,h.*
FROM table h,(SELECT @row:=0) AS it
此時執行將產生一列新的值,為id,遞增表示主鍵
然後方法和第一段sql一致。
SELECT rn.*
FROM
(
SELECT @row:[email protected]row +1 AS rownum,h.*
FROM table h,(SELECT @row:=0) AS it
)rn
WHERE rn.rownum IN
(
SELECT MAX(r.rownum)
FROM(
SELECT @row:[email protected]row +1 AS rownum,h.*
FROM table h,(SELECT @row:=0) AS it
)r
GROUP BY a,b,c,d
)