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
1960553

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.