2017-01-27 8 views
0

WHEREステートメントに変数を挿入するクエリがあります。クエリのWHEREステートメントを@variableとして

WHERE @Variable

私は(簡体字)、以下を試してみたが、動作するようには思えません。

注:ここでは、質問をする前に自分自身を理解するために連結要素を含めていません。

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 
; 
+0

動的クエリを作成して実行するには、http://stackoverflow.com/questions/23178816/mysql-dynamic-query-in-stored-procedureやhttp://stackoverflow.com/questions/8549619のようなものを使用します。/mysql-dynamically-build-query-string-in-a-stored-procedure-on-logicを使用します。 '@ var'は動作しません。 'where field = @ var'はあなたのクエリを書いているように動作します。 – zedfoxus

+0

ありがとうzedfoxus、本当に私の質問に答える、それは私がそれをしたい方法で行うことはできませんので、私は私の質問を考え直す必要がありますどのようにループNブロックにすることができます作成​​ステートメントに回すことができます。 TY – denski

+0

私はそれが欲しいと思う 'ANY'を見つけました - サブクエリーの各行を比較してください。私はとにかく答えをここに掲示します。 – denski

答えて

0

だからこの:

SET @IDNumber := 21; 
SELECT Players.PlayerID, COUNT(*) AS Games, SUM(Games.Points) 
FROM Teams, Players, Games 

WHERE 
Teams.PlayerID=Players.PlayerID 
AND 
Games.Game=Teams.Game 
AND 
Games.Team=Teams.Team 
AND 
Games.GameDate=Teams.GameDate 
AND 
(
Games.Game= ANY (SELECT Game FROM Teams WHERE [email protected]) 
AND 
Games.Team= ANY (SELECT Team FROM Teams WHERE [email protected]) 
AND 
Games.GameDate= ANY (SELECT GameDate FROM Teams WHERE [email protected]) 
) 

GROUP BY Teams.PlayerID 
ORDER BY Games DESC 
; 

はこれを作成します。

私が探していたまさにです
+----------+-------+-------------------+ 
| PlayerID | Games | SUM(Games.Points) | 
+----------+-------+-------------------+ 
|  15 |  8 |    10 | 
|  21 |  8 |    10 | 
|  8 |  8 |    10 | 
|  14 |  6 |     7 | 
|  5 |  6 |     7 | 
|  19 |  5 |     6 | 
|  11 |  5 |     7 | 
|  12 |  3 |     4 | 
|  10 |  3 |     3 | 
|  4 |  2 |     3 | 
+----------+-------+-------------------+ 
10 rows in set (0.01 sec) 

関連する問題