where-in

___ tag123sql ___ Structured Query Language (SQL) ist eine Sprache für die Abfrage von Datenbanken. Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) enthalten. Wenn sich Ihre Frage ausschließlich auf ein bestimmtes DBMS bezieht (verwendet bestimmte Erweiterungen / Funktionen), verwenden Sie stattdessen das Tag des DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten den ISO / IEC-Standard SQL verwenden. ___ tag123oracle ___ Oracle Database ist ein Datenbankmanagementsystem mit mehreren Modellen, das von Oracle Corporation erstellt wurde. Verwenden Sie dieses Tag NICHT für andere Produkte von Oracle wie Java und MySQL. ___ qstnhdr ___ SELECT aus Tabelle mit variierender IN-Liste in der WHERE-Klausel ___ tag123xmltable ___ XMLTable ordnet das Ergebnis einer XQuery-Auswertung relationalen Zeilen und Spalten zu. Sie können das von der Funktion zurückgegebene Ergebnis als virtuelle relationale Tabelle mit SQL abfragen. Mit diesem Tag können auch tabellarische Daten angezeigt werden, die in der XML-Notation angezeigt werden. ___ tag123wobei ___ Eine SQL-Standardbedingung der Form WHERE SOME_COLUMN IN (1,2,3) oder die Verwendung einer Unterabfrage zum Erstellen der Liste, zB WHERE SOME_COLUMN IN (SELECT X VON MYTABLE WHERE Y) ___ answer27750730 ___

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).]

    
___ answer27739139 ___

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%     
___ qstntxt ___

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

  1. %code% table enthält eine durch Komma getrennte Liste von IDs, die %code% ist
  2. %code% Tabelle enthält tatsächliche IDs, die %code% sind

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.

    
___
3
Antworten

MySQL gibt eine beliebige Reihenfolge nach ID an

Ist es möglich, eine beliebige Reihenfolge für eine MySQL SELECT -Anweisung anzugeben? Z. B. %Vor% Die Reihenfolge der Zahlen, die direkt nach IN aufgelistet sind, scheint keine Rolle zu spielen.     
01.12.2010, 17:31
3
Antworten

MySQL wählt Join wo und wo

Ich habe zwei Tabellen in meiner Datenbank: Produkte id (int, Primärschlüssel) Name (varchar) ProductTags Produkt_ID (int) tag_id (int) Ich möchte Produkte mit allen angegebenen Tags auswählen. Ich habe es versucht: %V...
16.02.2011, 14:33
2
Antworten

Ausführen einer WHERE-IN-Abfrage in CouchDB

Ich möchte mit einem Anruf bei CouchDB nach einer Liste bestimmter Dokumente fragen. Mit SQL würde ich etwas wie machen %Vor% Was ist ein Rezept dafür in CouchDB entweder durch _id oder ein anderes Feld?     
06.10.2012, 20:12
2
Antworten

SELECT aus Tabelle mit variierender IN-Liste in der WHERE-Klausel

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 temp und temp_id zwei Tabellen temp t...
02.01.2015, 06:39