変数がmysqlでどのように機能するかについて疑問があります。私が彼らのウェブで読んだように、変数を設定すると次の行に表示されるようになります。
私のテーブルは次のようなものです:
A B C N
1 NULL NULL 4
1 NULL NULL 4
1 1 NULL 4
1 1 NULL 4
1 1 1 4
1 1 1 4
私が欲しいのは、の行のみを返すことですC = 1
。行がない場合は、行がない場合を返しB = 1 and C is NULL
ますA = 1 and B is NULL and C is NULL
。
私の考えは:
select N as number,
@var_c := case when (C = 1) then 1 else -1 end as myc,
@var_b := case when (@var_c < 0 and B = 1) then 1 else -1 end as myB,
@var_c := case when (@var_a < 0 and var_b < 0 and C = 1) then 1 else -1 end as myC
from (select @var_a := -1) r_a,
(select @var_b := -1) r_b,
(select @var_c := -1) r_c,
(select A, B, C, N from my_table order by A desc, B desc, C desc) rows
返すべき(返したい)
number myA myB myC
4 -1 -1 1
4 -1 -1 1
4 -1 -1 -1
4 -1 -1 -1
4 -1 -1 -1
4 -1 -1 -1
これで動作しhaving myA > 0 or myB > 0 or myC > 0
ます。
しかし、それは戻ってきています
number myA myB myC
4 1 -1 -1
4 1 -1 -1
4 -1 -1 1
4 -1 -1 1
4 -1 1 -1
4 -1 1 -1
Mysql は行全体で変数を保持するべきではありませんか?
よろしく。