不同我有一個在MySQL 5.1以下的表格:發現「重複」行,在一列
+--------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------------+------+-----+---------+----------------+
| log_id | int(11) | NO | PRI | NULL | auto_increment |
| date | datetime | NO | MUL | NULL | |
| date_millis | int(3) | NO | | NULL | |
| eib_address | varchar(20) | NO | | NULL | |
| ip_address | varchar(15) | NO | | NULL | |
| value | decimal(20,10) | NO | MUL | NULL | |
| application | tinyint(4) | NO | | NULL | |
| phys_address | varchar(20) | NO | | NULL | |
| orig_log_id | bigint(20) | NO | | NULL | |
+--------------+----------------+------+-----+---------+----------------+
在此表中,log_id
和orig_log_id
始終是唯一的。不過,有可能兩行可能具有任何其他字段的重複值。忽略*log_id
字段,我們的問題是所有其他列中的兩行可能相同,但value
的值不同。我試圖找出正確的SQL查詢來確定何時兩個(或更多)行的date
,date_millis
和eib_address
具有相同的值,但value
,log_id
和orig_log_id
的值不同。到目前爲止,我已經能夠拿出的是完成第一條我在前面句子查詢:
SELECT main.*
FROM sensors_log main
INNER JOIN
(SELECT date, date_millis, eib_address
FROM sensors_log
GROUP BY date, date_millis, eib_address
HAVING count(eib_address) > 1) dupes
ON main.date = dupes.date
AND main.date_millis = dupes.date_millis
AND main.eib_address = dupes.eib_address;
不過,我似乎無法弄清楚的時候value
不同。我至少知道,只是投入AND main.value != dupes.value
到ON
條款不行!
這或多或少是我需要什麼。我寧願沒有這兩個表的全部內容,但它會做到這一點。謝謝。 – GarlicFries 2011-03-23 16:47:13
這讓它變得如此簡單!正是我在找什麼,以及。我明顯地只選擇了我關心的專欄,但在這個解決方案中普遍性非常好。 – missscripty 2016-07-07 17:05:28