Rolf B: sql: Alle IDs suchen, die in Zeitraum x zum ersten Mal vorkamen

Beitrag lesen

Hallo Jörg,

MINUS ist ein Mengenoperator aus Oracle SQL, andere SQLs nennen das EXCEPT DISTINCT. Dazu gehört aber nicht MySQL - merkwürdigerweise gibt's da nur UNION als Mengenoperator.

MariaDB kennt EXCEPT seit Version 10.3 und unterstützt MINUS ab Version 10.6.1 als Synonym.

Wegen des SQL - sorry, mein Mist.

SELECT DISTINCT
    ID
FROM
    myTable a
WHERE
    Auftragsdatum > "2021-01-01" AND NOT EXISTS(
    SELECT 
        ID
    FROM
        myTable b
    WHERE
        b.id = a.id
    AND
        Auftragsdatum < "2021-01-01"

Das DISTINCT kannst Du im Subselect weglassen, bei EXISTS geht's ja nur darum, ob mindestens einer existiert. Ich würde annehmen, dass der Server das DISTINCT an der Stelle eh wegoptimiert.

Wichtig ist aber der ID-Vergleich, denn Du willst ja wissen, ob diese ID vor 2021 existiert, und nicht irgendein Satz.

Rolf

--
sumpsi - posui - obstruxi