MySQL :: Aufgabe #5 :: Lösung #1
3 Lösungen
#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.
Schreibe eine Abfrage. mit der man doppelte Sätze finden kann.
#1
von Gustl (6560 Punkte)
- 16.08.2018 um 19:45 Uhr
Tabelle duplicate_table:
Insert:
Select der doppelten Einträge:
Da doppelte Einträge in einer Tabelle wohl meist unsinnig sind werde ich sie auch gleich löschen:
Ergebnis nach DELETE:
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:
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:
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:
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
Seite 1 von 0
1