Rumah > pangkalan data > tutorial mysql > Terangkan bagaimana mysql memadam data pendua

Terangkan bagaimana mysql memadam data pendua

藏色散人
Lepaskan: 2022-01-23 09:17:30
ke hadapan
10580 orang telah melayarinya

Artikel ini akan memperkenalkan kepada anda cara memadam data pendua dalam MySQL. Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.

sku harus mempunyai satu sku_id yang sepadan dengan sekeping data berat yang unik Disebabkan ralat program, data berlebihan yang sama muncul. Simpan satu sahaja dan padamkan yang lain.

字段 说明
id 自增
sku_id sku_id标识
weight 重量

Anggap nama jadual: berat

Soal senarai dengan data pendua

SELECT sku_id,COUNT(id) FROM weight GROUP BY sku_id HAVING COUNT(sku_id) > 1
Salin selepas log masuk

Soal setiap id terkecil dalam data pendua

SELECT min(id) FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1
Salin selepas log masuk

Soal data lain yang mengalih keluar id terkecil daripada data pendua

SELECT id,sku_id FROM weight WHERE sku_id IN(
    SELECT sku_id FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)AND id NOT IN(
    SELECT MIN(id) FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)
Salin selepas log masuk

Padamkan data lain dengan ID minimum data pendua dialih keluar

DELETE FROM weight WHERE sku_id IN(
    SELECT sku_id FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)AND id NOT IN(
    SELECT MIN(id) FROM weight   GROUP BY sku_id HAVING COUNT(sku_id) > 1)
Salin selepas log masuk

Sebabnya: semasa memadamkan jadual ini, jadual ini disoal pada masa yang sama dan jadual ini disoal pada masa yang sama masa kerana jadual ini dipadamkan, yang boleh difahami untuk kebuntuan. MySQL tidak menyokong operasi pemadaman dan pertanyaan jadual yang sama ini

错误代码: 1093You can't specify target table 'weight' for update in FROM clause
Salin selepas log masuk

Penyelesaian adalah seperti berikut: tanya data yang akan dipadamkan sebagai jadual pihak ketiga, dan kemudian tapis dan padamkannya.

DELETE FROM `weight` WHERE sku_id IN(
    SELECT sku_id FROM (SELECT sku_id FROM `weight` GROUP BY sku_id HAVING COUNT(sku_id) > 1) table1)AND id NOT IN (
    SELECT id FROM (SELECT MIN(id) AS id FROM `weight` GROUP BY sku_id HAVING COUNT(sku_id) > 1) table2)
Salin selepas log masuk

Kemas kini juga beroperasi pada prinsip yang sama seperti di atas.

Pembelajaran yang disyorkan: "tutorial video mysql"

Atas ialah kandungan terperinci Terangkan bagaimana mysql memadam data pendua. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan