Ich möchte eine Abfrage erstellen, die Daten in eine Tabelle einfügt und überprüft, ob mein Datumsbereich die bereits vorhandenen Datumsbereiche überlappt.MySQL einfügen-Anweisung doppelte Einträge
Ich erstellte die folgende Arbeitsabfrage, aber es fügt 2 Zeilen mit denselben Daten ein. Kannst du etwas falsch finden?
INSERT INTO infoscreen_times (screen_id, start, end, view_id)
SELECT ?, ?, ?, ?
FROM infoscreen_screens
WHERE EXISTS (
SELECT id
FROM infoscreen_times
WHERE ? BETWEEN start AND end
AND screen_id = ?
OR ? BETWEEN start AND end
AND screen_id = ?
OR ? <= start
AND ? >= end
AND screen_id = ?) IS FALSE
Start bedeutet der Start-Timestamp, Ende ist der End-Timestamp. In der Unterabfrage möchte ich prüfen, ob die Zeitstempel, die ich einfügen möchte, sich überlappen. Wenn sie wollen, bekomme ich einen Fehler und wenn sie die Abfrage nicht einfügen die Daten einfügen.
Vielen Dank im Voraus.
Sie mischen 'und' und' or' ohne '' '', um Parsing-Reihenfolge zu erzwingen. Das ist fast immer ein Zeichen für einen Fehler. –
Ich denke, es ist besser Programmiersprache verwenden, um Ihre Abfrage zu moderieren –