สอบถามคำสั่ง MySQL ในการลบข้อมูลที่ซ้ำกัน ให้เหลือแค่ 1 โดยลบเฉพาะแถวที่มีข้อมูล 2 ฟิลด์ที่ซ้ำกัน
แนวทางครับ Code (SQL)
delete * from table where id in(select max(id) from table where count(id)>1 group by student_id,subject_code)
Date :
2018-04-26 13:38:16
By :
mongkon.k
ขอบคุณครับสำหรับคำตอบ แต่มันเออเร่อนะครับ
ตอนนี้แก้ได้แล้วนะครับ โดยใช้คำสั่งนี้ครับ
CREATE TABLE temporaryTable
SELECT id, std_no, student_id, subject_id FROM table GROUP BY (std_no);
DROP TABLE table ;
ALTER TABLE temporaryTable RENAME TO table ;
ต้องขออภัยด้วยผมเข้าใจผิดลืมไปว่ามันมีฟิลด์ ที่เก็บไพมารี่คีย์จากตารางที่ 1 มาแล้ว คือ std_no ด้วย ( จากรูปตัวอย่าง ขาดไปฟิลด์นึงครับ) ซึ่งกำหนดค่าไว้ไม่ให้สามารถซ้ำได้ แต่ถ้ามีการบันทึกซ้ำ จะใช้คำสั่งข้างต้นนี้ ลบออกให้เหลือเพียง1 บันทึกครับ และตอนนี้ได้ใส่คำสั่ง PHP เช็คค่าซ้ำ เพื่อป้องกันการส่งข้อมูลซ้ำเป็นที่เรียบร้อยครับ
ขอบคุณครับ
Date :
2018-05-07 15:09:35
By :
mandekit
Load balance : Server 05