1樓:神弟
具體的sql我不知道,但是如果沒理解錯需求是:表中有重複資料,要求保留1條!可以這樣子實現---
1、先去重查出資料;-即查出表中所有資料(都是唯一的)2、把這1份資料保留起來;-我用的工具是aqua data studio,因此查出資料後-全選-右鍵-儲存結果-其中資料格式=insert語句
3、清空表資料;
4、把第2步儲存下來的資料重新插入回表中即可;
2樓:學神it科技
案例:id 姓名 課程名稱 分數
1 張三 數學 69
2 李四 數學 89
3 張三 數學 69
刪除除了自動編號不同,其他都相同的學生冗餘資訊
按常理來說,這個sql語句應該是:
delete tablename where id not in(select min(id) from tablename group by name,kecheng,fenshu);
這種寫法在sqlserver或者oracle中是支援的,但是mysql目前是不支援的,會報類似錯:you can't specify target table 'tablename' for update ,這是因為在mysql中不能同時查詢一個表的資料再同時進行刪除.
目前網上流行的一種解法是:
1)建立一個臨時表,講要查詢的列的存入臨時表中
create table temp as select ...
2)在temp表和原始表中進行操作
delete from tablename
3)drop temp...
但是這種做法,不僅浪費空間資源,同時也缺乏友好性。通過觀察我們發現這類查詢要解決的是如何將子查詢中的表與主查詢中的表區分開來,因此我們可以考慮用別名的方法,將子查詢的結果放到一個別名中。
完整的sql語句如下:
delete from tablename where id not in (select bid from (select min(id) as bid from tablename group by name,kecheng,fenshu) as b ) ;
解釋:select bid from (select min(id) as bid from tablename group by name,kecheng,fenshu) as b
這個子查詢的目的是從b中列出講篩選結果,即bid的集合。
(select min(id) as bid from tablename group by name,kecheng,fenshu) as b
將分組結果中的最小的bid當做一個心的集合當做一個心的子表b,
注意mid(id)一定要有一個別名,這裡取的是bid,作為b的一個列名,因為在上一級查詢中要用到這個列名。
sql如何只保留最近一條記錄,刪除其它相同的
3樓:匿名使用者
delete from 表 a where not exists(select 1 from
(select 使用者名稱,max(日期) 日期 from 表 group by 使用者名稱) b
where a.使用者名稱=b.使用者名稱 and a.日期=b.日期)執行前先備份下,避免出錯,然後相應的欄位,你就換成你表裡的欄位吧
sql 多個欄位內容出現相同,就進行刪除只保留一條記錄
4樓:匿名使用者
這個可以用group by 加上min函式來實現,具體如下insert into table b
select min(tel),name,adfrom a
group by name,ad
b表的id要是自增主健,在插入時自動賦值
5樓:匿名使用者
表弄個這倆欄位unique索引,後續不就不能插入了,這樣就好了吧
SQL怎樣刪除重複資料,sql中如何刪除一個表中重複的記錄
解決在excel電子 中,如果混雜有重複資料,如何定位,如何刪除的問題。首先刪除一張表中可能存在的重複資料 delete from 表 where 欄位1 in select 欄位1 from select 欄位1,row number over partition by 欄位1 order by ...
SQL重複資料只顯示一條,查詢語句怎麼寫
吳佳航 sql重複資料只顯示一條,查詢語句編碼的寫法是 如果是所有欄位都重複,使用 distinct。如果部分欄位重複,只能使用group by 或是其他的方法。結構化查詢語言 structured query language 簡稱sql 發音 es kju el s q l 是一種特殊目的的程式...
請問sql批量插入資料怎麼寫除了一條一條插入和
老k的財務自由之路 圖顯ip 暈,為什麼要除insert into table1 select from table2,最快就這個了,考試,規定不能用? 如果id設定了自動遞增 insert into table1 name select name from table2 如果id沒設成標識自動遞增...