表:設置主鍵`id`
ProductComapny
字段:id
,name
ProductComapny
內容10000 recorde。
現在我想id
設置主鍵,但一些id
記錄已經被反覆
1.how可以id
設置主鍵???
2.如何刪除重複記錄?
3.如何獲取重複記錄的數量?
由SQL SQLServer中和MySQL
學習
表:設置主鍵`id`
ProductComapny
字段:id
,name
ProductComapny
內容10000 recorde。
現在我想id
設置主鍵,但一些id
記錄已經被反覆
1.how可以id
設置主鍵???
2.如何刪除重複記錄?
3.如何獲取重複記錄的數量?
由SQL SQLServer中和MySQL
學習
回答了SQL Server
- 這不會在MySQL
工作。請指定哪些人,而不是光顧能夠幫助你的人。
要獲得重複的次數:
SELECT id, name, COUNT(*) FROM productCompany GROUP BY id, name
要應用一個主鍵,先刪除重複如下:
WITH sorted AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY id, name) AS duplicate_id,
id,
name
FROM
productCompany
)
DELETE
sorted
WHERE
duplicate_id > 1
然後使用Management Studio應用您首要的關鍵。
如何獲取重複記錄的數量? – ashkufaraz
我意識到問題被標記爲SQL Server和MySQL。請注意,這裏沒有窗口函數('ROW_NUMBER()OVER ...')在MySQL中。 –
如果你的問題是關於MySQL,那麼這將做到:
廣告3:SELECT COUNT(*),id FROM ProductComapny GROUP BY id
會給你每個ID的出現次數的計數數據庫
廣告2:這取決於您的業務邏輯 - 您想保留哪個?
廣告1:ALTER TABLE ProductComapny ADD PRIMARY KEY(id);
(是的,MySQL的/ MSSQL的區別很重要:IIRC以上既不是MSSQL有效的代碼),刪除重複項
一種方法是將它們複製到臨時表,從主表中刪除所有重複項,將數據從temp複製到main。
插入件插入不是Temptable
選擇ID,名稱
從ProductComapny
組由ID,名稱
具有COUNT(*)> 1
從ProductComapny
刪除其中id在(選擇ID來自TempTable)
插入到ProductComapny
選擇ID,名稱
from TempTable
這應該有效。
之後,您可以在ID字段上設置主鍵,因爲不會有更多副本。
如果你強制mysql添加主鍵,它將刪除所有重複以便能夠接管,你可以強制關鍵字忽略忽略警告的表的替代。
ALTER IGNORE TABLE ProductComapny ADD PRIMARY KEY (id);
此標記都'mysql'和'SQL server'。 **這是它嗎?** – JNK
sql sql sql sql sql無論sql server還是mysql – ashkufaraz
@JNK - LOL,Good Spot。 @ ashkufarax - 它很重要,MySQL和SQL Server有不同的操作可用於對方;他們用不同的語法以不同的方式做不同的事情。例如,我的答案在MySQL中不起作用。 – MatBailie