Es gibt noch eine andere Möglichkeit, dies zu erreichen, nämlich %code% :
%Vor%(Ich habe %code% oben verwendet, um den überflüssigen Leerraum in der ID-Liste loszuwerden - macht die Dinge etwas einfacher.) Alternativ könnte man %code% verwenden:
%Vor%[Die Zeichen caret ( %code% ) und dollar-sign ( %code% ) müssen mit dem Anfang und dem Ende des Strings übereinstimmen - also kann die ID entweder am Anfang des Strings mit etwas übereinstimmen ( endend mit einem Komma oder dem Ende der Zeichenkette) oder etwas, das mit einem Komma beginnt (wiederum mit einem Komma oder dem Ende der Zeichenkette).]
Ihre Anforderung wird als variierende IN-Listen aufgerufen. Siehe Unterschiedliche IN-Werteliste in WHERE Klausel
Grund: %code% ist NICHT entspricht %code% OR %code%
Daher
SELECT * FROM temp_id WHERE daten_id IN (SELECT ids FROM temp);
ist dasselbe wie
SELECT * FROM temp_id WHERE daten_id IN ('1, 2, 3');
was einen Fehler %code% -
auslösen würde %Vor%NICHT wie
SELECT * FROM temp_id WHERE daten_id IN (1, 2, 3);
was Ihnen eine korrekte Ausgabe geben würde -
%Vor%Lösung:
Für Ihre Anforderung können Sie es so erreichen -
%Vor%Alternativ können Sie Ihre eigene TABLE-Funktion oder eine Pipeline-Funktion erstellen, um dies zu erreichen. Ihr Ziel sollte sein, das Komma zu teilen -eingeteilte IN-Liste in mehrere Zeilen . Wie Sie es tun, liegt an Ihnen!
Arbeitsdemo
Nehmen wir ein Beispiel für die Standardtabelle EMP in %code% schema.
Ich habe eine Liste von Jobs in einer Zeichenfolge und möchte die Mitarbeiter für diese Jobs zählen:
%Vor%Oh! Was ist passiert? Die Standard emp-Tabelle sollte eine Ausgabe 10 ergeben. Der Grund dafür ist die variierende IN-Liste .
Sehen wir uns den richtigen Weg an:
%Vor%Ich stehe vor einem Problem im Projekt, an dem ich gerade arbeite. Ich kann Ihnen keinen tatsächlichen Code geben, aber ich habe einen ausführbaren Beispielcode wie unten erstellt.
Hier sind %code% und %code% zwei Tabellen
Ich möchte Zeilen von %code% table durchsuchen, indem ich %code% von einer kommagetrennten Liste von IDs aus %code% table
abrufe %Vor%Diese Abfrage funktioniert nicht
%Vor%Arbeitsabfrage
%Vor%Hier ist der Unterschied zwischen den obigen beiden Abfragen: Ich verwende eine Spalte aus %code% table in der ersten Abfrage und direkt zitierte %code% in der zweiten Abfrage. Warum nicht funktioniert nicht? Fehle ich etwas? Ich denke, dass es einen Unterschied zwischen den Datentypen geben kann, aber nicht in der Lage ist, es herauszufinden.