其實,我們通過MySQL的語句關鍵詞ignore,則不需要業務層判斷,舉例說明如下:
首先,我們有個user表,字段有id、name,此表已有數據,如下圖:
5NCV08}[60RTO.png)

當我們使用下面sql語句

結果應為重復數據,報錯了。
那我們看下面sql語句,結果如下:
結論:當我們為了避免重復是,sql中可以使用ingnre關鍵詞,來達到簡化業務層代碼的目的
2、 關于臨時表,借用別人的例子,如下:
給定一個user表,包含id和uid兩列,其中uid列可能有重復,要求找出重復的記錄,并刪掉多余的記錄,使得對于uid重復的記錄只保留id最小的記錄
drop table if EXISTS `tmp`;create table tmp as select min(id) as id,uid from user GROUP by uid HAVING count(uid)>1;delete from user where id not in (select id from tmp) and uid in(select uid from tmp); drop table tmp;commit;
新聞熱點
疑難解答