|
|
|
MYSQL สอบถามการตรวจหาข้อมูลซ้ำภายในไอดีเดียวกัน และทำการลบให้เหลือเพียงอันเดียว |
|
|
|
|
|
|
|
มีข้อมูลประกอบไหม
|
|
|
|
|
Date :
2018-01-30 15:29:56 |
By :
OOP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้า id_email เป็น primary
Code (SQL)
delete t
from tb1 as t
left join (select min(id) x, uid from tb1 group by uid) as m
on m.uid = t.uid
where t.id>m.x
|
|
|
|
|
Date :
2018-01-30 21:11:54 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้พอเข้าใจหลักการการใช้คำสั่ง group by แล้วครับ แต่ยังงงวิธีการทำให้เก็บไว้แค่1ข้อมูล ที่เหลือลบทิ้งออกหมด
Code (SQL)
Select email
From data_email
Group By id_user
Having count(email)>1
|
|
|
|
|
Date :
2018-01-31 12:17:41 |
By :
zodaema |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
column ไหนเป็น PK ครับ
|
|
|
|
|
Date :
2018-01-31 13:02:37 |
By :
OOP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (SQL)
DELETE FROM data_email WHERE id_email IN(Select MIN(id_email)From data_email Group By id_user Having count(email)>1)
|
|
|
|
|
Date :
2018-01-31 15:04:06 |
By :
OOP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คห 8 ได้ทดสอบหรือยังครับ น่าจะมีปัญหาหลายอย่างนะครับ
1 result ของ "Select MIN(id_email) from data_email Group By user_id Having count(id)>1"
กรณี user เดียวกัน มี email มากกว่า 3 ก็จะได้ แค่อันเดียว
2 ไวยกรณ์ สำหรับ การ delete ไม่ถูกต้อง
ลองดูตัวอย่างที่ผมตอบไว้ครับ
|
|
|
|
|
Date :
2018-01-31 22:23:52 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้เหมือนกันครับ แต่ข้อเสียคือต้อง Execute หลายรอบ จนกว่าข้อมูลซ้ำจะหายไปครับ ผมดูของคุณละคับ น่าจะโอเคสุดละ แต่กลัว เจ้าของกระทู้จะงงๆๆ เลยแนะนำแบบนี้
|
|
|
|
|
Date :
2018-02-01 11:09:08 |
By :
OOP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้ผมใช้อีกวิธีนึงก็คือการสร้างตาราง temp เอาไว้ แล้วทำการเลือก Insert พวก DISTINCT มาเก็บพักเอาไว้
แล้วค่อยเคลียข้อมูลออกหมด ย้ายข้อมูล temp กลับมา
แต่ดูจะเป็นวิธีที่ยุ่งยากมากๆครับ
|
|
|
|
|
Date :
2018-02-01 16:15:53 |
By :
zodaema |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แนะนำให้ดูที่ NO.4 ครับ อันนี้น่าจะโอเคสุดละครับ
|
|
|
|
|
Date :
2018-02-01 16:18:57 |
By :
OOP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|