⑴ SQL多個欄位如何去重
SQL語句為:select distinct telephone (屬性) from test(表名)
因為號碼有重復,所以以號碼telephone來查詢,配合distinct,使得查詢結果不重復。
使用關鍵字:distinct即可去重。
(1)sql兩個欄位去重復的資料庫擴展閱讀:
選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變數(包括局部變數和全局變數)等構成。
1、選擇所有列
例如,下面語句顯示testtable表中所有列的數據:
SELECT *FROM testtable
2、選擇部分列並指定它們的顯示次序
查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
3、更改列標題
在選擇列表中,可重新指定列標題。定義格式為:
列標題=列名列名 列標題
如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題:SELECT 昵稱=nickname,電子郵件=emailFROM testtable。
4、刪除重復行
SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。使用DISTINCT選項時,對於所有重復的數據行在SELECT返回的結果集合中只保留一行。
5、限制返回的行數
使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一百分數,指定返回的行數等於總行數的百分之幾。TOP命令僅針對SQL Server系列資料庫,並不支持Oracle資料庫。
⑵ mysql如何去除兩個欄位數據相同的記錄
方法有很多,這里介紹兩種
如果要保留id的最小值,例如:
最後要刪除的sql為:delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name)
如果想保留id的最大值:
簡單的辦法是:delete from ceshi where id not in (select count(*) as count ,name,id from (select * from ceshi order by id desc) group by name)
如果想要刪除的是兩個列裡面對應相同的數據,也就是說表裡面有兩條記錄的name都是admin,要是只想保留其中一條的話,order by 的時候增加一個值即可,例如:
delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name,email)
只需要把你這張表當成兩張表來處理就行了。
DELETE p1 from TABLE p1, TABLE p2 WHERE p1.name = p2.name AND p1.email = p2.email AND p1.id < p2.id;
這里有個問題,保留最新的那一條(也就是ID最小的那個)
上面的的語句,p1.id < p2.id,所以獲取到的是id最大的,因為p1.id小於p2.id就會被刪除,只有最大的值不滿足。如果要獲取id最小的那個,只需要把'<'改成'>'即可。
當然是用group by,count可以更精準控制重復n次的情況。
⑶ sql查詢去掉重復記錄
1、打開要去掉重復數據的資料庫,這里新建一張含有重復數據的user表做示版例,如下圖權所示: