1

次のような where cluse を使用したクエリがあります。

WHERE (scalar-subquery1) > (scalar-subquery2)

そして、それはうまくいきます。クエリ間の「より大きい」(">") の代わりに、任意の演算子を使用できます。

これらのクエリに名前を付けて、select 句で参照できるようにしたいので、次のことを試しました。

SELECT q1,q2 ... WHERE (scalar-subquery1) as q1 > (scalar-subquery2) as q2

as q1しかし、と>演算子の間に構文エラーが報告されています。この問題を回避する方法はありますか?

4

2 に答える 2

2

これはサブクエリとして実行できます。

select q1, q2
from (select (scalar-subquery1) as q1, (scalar-subquery2) as q2
     ) t
where q1 < q2 

またはクロスジョインとして:

select q1.val, q2.val
from(scalar-subquery1) as q1 cross join
    (scalar-subquery2) q2
where q1.val < q2.val

3番目のオプションは、最初のオプションの変形です。

select t.*
from (select <current select>
             (scalar-subquery1) as q1, (scalar-subquery2) as q2
      from <current from>
     ) t
where q1 < q2
于 2012-07-27T14:12:07.877 に答える
1

あなたが望むように聞こえます:

SELECT (scalar-subquery1) as q1, (scalar-subquery2) as q2 ... WHERE (scalar-subquery1) > (scalar-subquery2)

MySql では、SELECT の where 句で項目を参照できないと思います

于 2012-07-27T14:05:30.763 に答える