มีตารางที่มีคอลัมน์ชื่อ article_title สมมติว่าชื่อตารางเป็นบทความ ฉันต้องการค้นหาระเบียนที่ data_title data เหมือนกันในบันทึกมากกว่าหนึ่งรายการ
เสียงเหมือนฉันคุณต้องมีรหัสเพราะคุณต้องการค้นหาบันทึกตามarticle_title
เพราะคุณมีซ้ำ
พื้นฐานต่ำสุด / สูงสุดพร้อม GROUP BY (คุณจะพลาดรหัสเมื่อมีมากกว่า 2 ซ้ำกัน)
SELECT
MIN(id) -- for FIFO id's (first id by duplicate)
, MAX(id) -- for LIFO id's (last id by duplicate)
, article_title
, COUNT(*)
FROM
articles
WHERE -- Maybe to filter out '' or IS NOT NULL
article_title != '' AND article_title IS NOT NULL
GROUP BY
article_title ASC
HAVING
COUNT(*) >= 2
;
หรือกลับไปที่ denormalisation เพื่อสร้าง CSV สำหรับ LIFO id (รหัสเก่าโดยทำซ้ำ) แต่คุณรู้รหัสทั้งหมดที่นี่ ..
SELECT
GROUP_CONCAT(id ORDER BY ASC SEPARATOR ',') -- change to DESC if want the last record first
, article_title
, COUNT(*)
FROM
articles
GROUP BY
article_title ASC
HAVING
COUNT(*) >= 2
;
GROUP BY
: mysqlperformanceblog.com/2006/09/06/…