0
Ich habe eine Abfrage, die ich eine Variable in eine WHERE-Anweisung einfügen möchte.Anfrage WHERE Anweisung als @ Variable
WHERE @Variable
Ich habe versucht, die folgenden (vereinfacht), aber es scheint nicht zu funktionieren.
ANMERKUNG: Ich habe das Verkettungselement hier nicht eingefügt, um den Teil herauszufinden, bevor ich die Frage gestellt habe.
SET @id := x;
SET @n := (SELECT COUNT(*) FROM Table2 WHERE [email protected]);
SET @Variable := (
(
Table1.Column1=(SELECT Column1 FROM Table2 WHERE [email protected] LIMIT 1 OFFSET 0)
AND Table1.Column2=(SELECT Column2 FROM Table2 WHERE [email protected] LIMIT 1 OFFSET 0)
AND Table1.Column3=(SELECT Column3 FROM Table2 WHERE [email protected] LIMIT 1 OFFSET 0)
)
.........
OR
(
Table1.Column1=(SELECT Column1 FROM Table 2 WHERE [email protected] LIMIT 1 OFFSET @n)
AND Table1.Column2=(SELECT Column2 FROM Table2 WHERE [email protected] LIMIT 1 OFFSET @n)
AND Table1.Column3=(SELECT Column3 FROM Table2 WHERE [email protected] LIMIT 1 OFFSET @n)
)
)
;
SELECT Table1.Column1, Table1.Column2, Table1.Column3, Table2.Column1, Table2.Column2, Table2.Column3
FROM Table1, Table2
WHERE
@Variable
;
Um eine dynamische Abfrage zu erstellen und auszuführen, verwenden Sie etwas wie http://stackoverflow.com/questions/23178816/mysql-dynamic-query-in-stored-procedure und http://stackoverflow.com/questions/8549619/mysql-dynamisch-Build-Abfrage-String-in-einer-gespeicherten-Prozedur-basiert-auf-Logik. 'wo @ var' wird nicht funktionieren. 'where field = @ var' funktioniert so, wie Sie Ihre Abfrage schreiben. – zedfoxus
Dank zedfoxus, die meine Frage wirklich beantwortet, kann es nicht auf die Weise getan werden, wie ich es will, also muss ich meine Frage neu überdenken und wie ich es in eine Loop-Anweisung verwandeln kann, die N Blöcke lang sein kann. TY – denski
Ich fand "ANY", was zu tun scheint, was ich will - Vergleichen Sie jede Zeile in einer Unterabfrage. Ich werde die Antwort hier trotzdem posten. – denski