MySQL :: Aufgabe #5 :: Lösung #1

3 Lösungen Lösungen öffentlich
#5

Doppelte Datensätze finden

Fortgeschrittener - MySQL von Gisbert5020 - 14.08.2018 um 15:02 Uhr
Oft ist es notwendig, aus einer Tabelle doppelte Sätze heraus zu filtern.
Schreibe eine Abfrage. mit der man doppelte Sätze finden kann.
#1
vote_ok
von Gustl (6560 Punkte) - 16.08.2018 um 19:45 Uhr
Tabelle duplicate_table:
Quellcode ausblenden SQL-Code
CREATE TABLE IF NOT EXISTS `duplicate_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sensor_id` int(11) NOT NULL,
  `value` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1

Insert:
Quellcode ausblenden SQL-Code
INSERT INTO `duplicate_table` (`id`, `sensor_id`, `value`) VALUES
(1, 3, 20),
(2, 4, 24),
(3, 3, 24),
(4, 4, 24),
(5, 3, 20),
(6, 5, 20)

Konsolenausgabe:

--------------------------------------
| id | sensor_id | value |
|--------|---------------|-----------|
| 1 | 3 | 20 |
| 2 | 4 | 24 |
| 3 | 3 | 24 |
| 4 | 4 | 24 | <-- DOPPELT
| 5 | 3 | 20 | <-- DOPPELT
| 6 | 5 | 20 |
--------------------------------------


Select der doppelten Einträge:
Quellcode ausblenden SQL-Code
SELECT d1.* FROM duplicate_table d1, duplicate_table d2 
 WHERE d1.id > d2.id 
  AND d1.sensor_id = d2.sensor_id 
  AND d1.value = d2.value

Da doppelte Einträge in einer Tabelle wohl meist unsinnig sind werde ich sie auch gleich löschen:
Quellcode ausblenden SQL-Code
DELETE d1 FROM duplicate_table d1, duplicate_table d2 
 WHERE d1.id > d2.id 
  AND d1.sensor_id = d2.sensor_id 
  AND d1.value = d2.value

Ergebnis nach DELETE:

Konsolenausgabe:

--------------------------------------
| id | sensor_id | value |
|--------|---------------|-----------|
| 1 | 3 | 20 |
| 2 | 4 | 24 |
| 3 | 3 | 24 |
| 6 | 5 | 20 |
--------------------------------------

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben