mysqlは宣言型言語であるため、割り当て変数の順序を強制的に変更する方法が見つかりません。mysql変数の割り当て:どのように割り当て順序を強制するのですか?
は、このクエリを取る:
SET @v1=0;
SET @v2=0;
SELECT @v1, @v2
FROM MyTable table
WHERE (@v1:[email protected]) is not null
AND (@v2:=2) is not null;
結果は次のとおりです。
@v1 | @v2
---------
2 | 2
@ V2はMySQLのエンジンにより、@ v1の前に解析されるためです。
どのように私はこの結果を持っている割り当ての順序を強制することができます。
@v1 | @v2
---------
0 | 2
編集:ここではVariable assignment with mysql
がない理由を割り当て順序を強制的にについての質問です:これは同じ問題ではありません結果は期待通りではありません。
UPDATE:あなたは左外部結合を使用する場合 は、結果も奇妙である。この場合、
SET @v1=0;
SELECT @v1
FROM Account other
LEFT OUTER JOIN SimpleValue f_PC ON f_PC.accountId=other.id AND f_PC.refShortcut='PC'
WHERE CASE WHEN (other.context='44') THEN (@v1:[email protected]+1) ELSE null END
ORDER BY @v1 ASC
は、クエリは60件の結果を返しますが、@ v1の値は、私が削除した場合は120
です左外部結合、v1値は60です。なぜですか?
[mysqlで変数を割り当てる](http://stackoverflow.com/questions/4924021/variable-assignment-with-mysql) –
なぜこの質問をもう一度聞かれますか? –
これは同じ質問ではありませんが、他の質問はなぜ私がこれらの結果を持っているかです。この質問は、今私はどのように期待される結果を得るために行うことができます。 StackOverflowはフォーラムではないので、別の質問を開くのが好きです。質問を編集して変換するだけで、他の質問を読んだ人は答えられないと思います。 –