Wenn die Werte in der Anweisung String aufgeführt werden, anstatt in einer Tabelle gespeichert, dann vielleicht eine Revision der Syntax für die Werteliste verwendet wird zur Zeit zusammensetzt [ offensichtlich, von einer anderen Eingabe als eine TABLE] für das IN-Prädikat kann bewirkt werden? Die folgende überarbeitete Syntax für eine Werteliste könnte sowohl für die ursprüngliche Aggregatabfrage [die unmittelbar nachfolgend als erste von zwei Abfragen angezeigt wird] als auch für die Abfrage verwendet werden, für die die Wie-zu-Code abgefragt wird [der zweite der zwei Abfragen unten]:
Select count(*)
from TABLE_A
where Col1 in (values('one'),('two'),('three'),('four'))
; -- report from above query follows:
COUNT (*)
2
[bgn-Edit 05-Aug-2016: Hinzufügen dieser Text und Beispiel knapp unterhalb]
Offenbar mindestens eine DB2-Variante an unbenannte Spalten für die abgeleitete Tabelle sperrt, so dass die Abfrage gerade unten nennt die Spalte; Ich wählte COL1, um den Namen von der tatsächlichen TABLE abzugleichen, aber das sollte nicht notwendig sein. Die (col1)
wird zur ursprünglichen Abfrage hinzugefügt, die von der ursprünglichen Vorbearbeitungsversion übrig bleibt. diese Version bleibt nach diesem \ Einfügen bearbeitet und fehlt die (col1)
hier hinzugefügt:
select *
from (values('one'),('two'),('three'),('four')) as x (col1)
except (select * from table_a)
; -- report from above query follows:
COL1
three
four
Das Folgende ist die ursprüngliche Abfrage angegeben, für die der Kommentar unten einen Fehler für eine unbenannte Spalte legt nahe, wenn auf einigen unausgesprochenen DB2 laufen Variante; Ich habe darauf hingewiesen, dass diese SQL-Abfrage-Funktionen ohne Fehler, auf DB2 für i 7.1
[End-Edit 05-Aug-2016]
select *
from (values('one'),('two'),('three'),('four')) as x
except (select * from table_a)
; -- report from above query follows:
VALUES
three
four
Wenn die 1000 Werte in 'IN' Zustand dann, Sie hinzufügen Tabelle und speichern Sie alle 1000 Datensätze darin.Dann mit 'LEFT JOIN' mit' NULL' Check können Sie leicht die nicht passenden Datensätze – Arulkumar
@Arulkumar finden. schon wusste ich über diese Methode. Ich brauche eine andere Lösung. –
Könnte eine Syntaxalternative für die Spezifikation der VALUES() als _any other other_ Methode genügen? Wenn das IN-Prädikat als [oder effektiv; Ich kann die Nicht-Auswahl-Unterabfrage-Syntax nicht testen] 'Col1 in (Werte ('Eins'), ('Zwei'), ('Drei'), ('Vier'))' Dann könnte dieselbe Syntax in einem verwendet werden EXCEPT query [oder der ähnliche Effekt von EXCEPTION JOIN zu dem bereits vorgeschlagenen LEFT JOIN]. – CRPence