Ich verfüge über mehrere Spalten, die eindeutige, eindeutige Bezeichner speichern, die austauschbar verwendet werden können. Ich möchte daher Datensätze auswählen, bei denen entweder Col1
oder Col2
einer Anzahl von Parametern entspricht. Ich habe folgendes versucht, und Variationen, IE, wo Col1 in (?, ?)
oder .Wählen Sie Zeilen, in denen sich mehrere Spalten in den Parameterwerten befinden
SELECT * FROM Table WHERE EXISTS (Col1, Col2) IN (?, ?);
Ich kann zur Zeit acheive dies die folgende verwenden, jedoch ist es lang und unhandlich, da sie für jede Abfrage wiederholt ? in (Col1, Col2)
würde ich binden möchten.
SELECT * FROM Table WHERE ? in (Col1, Col2) OR ? in (Col1, Col2);
Letztlich meine Abfrage kann bis zu 1000 Parameter (alle Pakete werden eindeutig sein), so dass ich frage mich, ob es eine natürliche Art und Weise ist es, die obige Abfrage zu tun?
Wenn Ihre DB richtig normalisiert, dann gäbe es nur eine 'ColX' pro Zeile sein, und man konnte einfach diese Tabelle mit den Suchwerten verbinden. –
@CL, dies beinhaltet externe Datenbankkennungen für Daten mit vielen Zeilen, von denen es viele gibt, sie werden synonym verwendet. Einige der Identifikatoren stammen aus verschiedenen Spezifikationen, einige sind Synonyme, einige stammen von konkurrierenden Gruppen, beziehen sich jedoch alle auf das Gleiche. Für leistungskritische Aufgaben verwende ich bereits einige Regexes, um den ID-Typ zu identifizieren und anschließend Abfragen getrennt zu verarbeiten. Wenn Leistung jedoch kein Problem ist, habe ich mich gefragt, ob es einen faulen Weg gab. Ein Join wäre hier nicht geeignet. (Ich verstehe das ist ungewöhnlich). –
@CL, sorry, viele Spalten (und viele Daten in der Spalte). –