1. 程式人生 > >mysql多欄位查詢去重

mysql多欄位查詢去重

當資料表有主鍵時,使用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 )