10085998: Eine SQL-Anweisung

Beitrag lesen

Hallo Leute,

ich habe folgendes Problem:
Es ist ein Array gegeben: (1, 4, 4568)
Es ist eine Tabelle gegeben namens "artikel" mit den spalten (id, name, nr)

Aufgabe:
Zeige alle Werte des Arrays an, die sich nicht als Wert in der Spalte nr in der Tabelle artikel befinden.

Ich habe die folgende ziemlich umständliche Lösung gefunden:
SELECT test1
FROM (
  SELECT 1 AS test1
  UNION
  SELECT 4 AS test1
  UNION
  SELECT 4568 AS test1
) AS test
LEFT JOIN artikel ON test.test1 = artikel.nr
WHERE IsNull( artikel.id )

Mit dieser SQL-Anweisung funktioniert es zwar, aber bei einem großen Array muss man umständlich jeden Wert des Arrays als Union Select zusammenführen.

Eine andere Möglichkeit wäre noch eine temporäre Tabelle mit einer Spalte zu bauen und dort die Werte des Arrays zu speichern und mit dieser Tabelle dann einen LEFT JOIN auf die Tabelle artikel machen.

Meine Frage ist nun: Kann man mein Problem simpler mit einer einzigen SQL-Anweisung lösen?
Ich dachte an sowas ähnliches wie:
SELECT test1
FROM DUAL WHERE DUAL.TEST1 in (1, 4, 4568)
) AS test
LEFT JOIN artikel ON test.test1 = artikel.nr
WHERE IsNull( artikel.id )

was natürlich nicht funktioniert.
Gibt es ein sql-Anweisung mit der ich die Werte eines Arrays in einer Spalte einer Tabelle darstellen kann?
Als Datenbank steht mysql zur Verfügung.

vielen Dank im voraus