sql重復(fù)數(shù)據(jù)只取一條 如何刪除sql中某個字段出現(xiàn)重復(fù)的數(shù)據(jù),且只保留id最小的?
如何刪除sql中某個字段出現(xiàn)重復(fù)的數(shù)據(jù),且只保留id最小的?其實非常的簡單,只需要把你這張表當(dāng)成兩張表來處理就行了。DELETE p1 from TABLE p1, TABLE p2 WHERE p1
如何刪除sql中某個字段出現(xiàn)重復(fù)的數(shù)據(jù),且只保留id最小的?
其實非常的簡單,只需要把你這張表當(dāng)成兩張表來處理就行了。DELETE p1 from TABLE p1, TABLE p2 WHERE p1.name = p2.name AND p1.email = p2.email AND p1.id < p2.id這里有個問題,題主說保留最新的那一條(也就是ID最小的那個),既然是遞增,最新的不應(yīng)該是最大的那條嗎?上面的的語句,p1.id < p2.id,所以獲取到的是id最大的,因為p1.id小于p2.id就會被刪除,只有最大的值不滿足。如果要獲取id最小的那個,只需要把"<"改成">"即可。當(dāng)然是用group by,count可以更精準控制重復(fù)n次的情況。不過目測樓主需求應(yīng)該只要把重復(fù)的刪掉,保留最新的就可以了。
如何用sql語句處理兩表聯(lián)查的相同字段時,只保留有數(shù)據(jù)的字段?
比如說現(xiàn)在有一個user表一個role表,都有一個USERNAME 字段,關(guān)聯(lián)字段也是USERNAME,這里只查詢USERNAME字段不為null的一方的值SELECT CASE WHEN u.USERNAME IS NOT NULL THEN u.USERNAMEWHEN r.USERNAME IS NOT NULL THEN r.USERNAME ENDFROM [USER] u RIGHT JOIN ROLE r ON u.USERNAME = r.USERNAME
關(guān)于SQL,如果一個表中的某個字段有重復(fù)值,重復(fù)值我只取一個應(yīng)該怎么做呢?
用SQL嵌套比較好,SQL也比較清楚,
內(nèi)層SQL,datepart(day,timestr)或convert 找到所有12月份,每個人提交日報的日期是每月的第幾天,并生成一個字段,distinct確保只記錄每天只保留一個 datepart(date,timestr)把每人的提交那一天找出來
外層SQL統(tǒng)計每個人有幾天:
select username,count(*) from (select distinct username, datepart(dd,timestr) as userday from a
where datepart(mm,timestr)=12)
group by username