您好,請問在這個sql中,where條件沒太明白~
delete t1 from tdb_goods as t1 left join (select goods_id ,goods_name from tdb_goods group by goods_name having count(goods_id) >= 2) as t2 on t1.goods_name = t2.goods_name where t1.goods_id > t2.goods_id;
這個語句是例子中得例子,也可以執(zhí)行成功,但是where t1.goods_id > t2.goods_id;有點兒看不太懂~去除重復(fù)只能通過id大小判斷嘛?還有別的寫法可以分享嘛?
2015-12-16
這里因為只有主鍵約束,所以刪除重復(fù)的方法只有從主鍵約束上著手才對。如果這里有唯一約束,那么可能有其他的方法來刪除重復(fù),這是我個人的理解。
2015-04-20
17 | Mac Pro MD878CH/A 專業(yè)級臺式電腦
????? |
18 |? HMZ-T3W 頭戴顯示設(shè)備
??? |
19 | 商務(wù)雙肩背包
???? |
20 | X3250 M4機(jī)架式服務(wù)器 2583i14
?????? |
23 |? LaserJet Pro P1606dn 黑白激光打印機(jī)
這是原表經(jīng)過 GROUP BY 查詢的的記錄 不顯示重復(fù)的,所以ID21和ID22被隱藏, 因為在原表中 ID 是18 和19的商品有重復(fù)記錄 所以會一次排到ID是21 和22(不過經(jīng)過GROUP BY 修飾不顯示了),因為21和22 是重復(fù)的記錄 并且是在ID18與ID19 之后排下去的,所以 我們就選擇了? t1.goods_id>t2.goods_id? 這個區(qū)間就是重復(fù)的記錄 如果不加的話 系統(tǒng)會認(rèn)為只要 t1和t2之間名字一樣的記錄包扣重復(fù)的名字 會全部刪除? 加了這個條件? 系統(tǒng)會 只刪除 重復(fù)的記錄? 明白了嗎?
2015-02-04
http://blog.csdn.net/anya/article/details/6407280? 感覺這個寫法看起來更容易理解一下,不過貌似原理都是一樣的,就是把id更大的記錄刪除。