記得兩年前我的老師給我出了一道題目:
假如有一張users表,里面有user_id,user_name兩個(gè)字段,用一條sql語句去掉數(shù)據(jù)庫里的userName重復(fù)的記錄.
當(dāng)時(shí)想了很久,都沒想出答案.今天突然想起這個(gè)問題,想到了兩種實(shí)現(xiàn).
1.delete from users a where a.user_id = (select max(b.user_id) from users b where a.user_name=b.user_name);
這一種自聯(lián)接,效率低一點(diǎn).
2.delete from users where user_id not in(select max(user_id) from users group by user_name having count(user_name)>=1);
這一種先分組,效率高一些.
在此作下符號,希望對同行的朋友們有所啟示.