次のようなクエリがあります。
SELECT a, b, c,
(SELECT d from B limit 0,1) as d
FROM A
WHERE d >= 10
句なしでクエリを実行すると必要な結果が得られますが、where
句を追加するwhere
とクエリが失敗します。
誰かがそれを解決する方法を提案していますか?
次のようなクエリがあります。
SELECT a, b, c,
(SELECT d from B limit 0,1) as d
FROM A
WHERE d >= 10
句なしでクエリを実行すると必要な結果が得られますが、where
句を追加するwhere
とクエリが失敗します。
誰かがそれを解決する方法を提案していますか?
WHERE
句で列エイリアスを使用することはできません。
したがって、クエリを外側の選択でラップし、そこに条件を適用します
SELECT *
FROM
(
SELECT a, b, c,
(SELECT d FROM B LIMIT 0,1) d
FROM A
) q
WHERE d >= 10
HAVING
または、代わりにその条件を句に導入できます
SELECT a, b, c,
(SELECT d FROM B LIMIT 0,1) d
FROM A
HAVING d >= 10
さらに別のアプローチは、句CROSS JOIN
で条件を使用して適用することですWHERE
SELECT a, b, c, d
FROM A CROSS JOIN
(
SELECT d FROM B LIMIT 0,1
) q
WHERE d >= 10
上記のすべてのクエリのSQLFiddleデモを次に示します。
これは、あなたの望むことですか?
SELECT a, b, c,
B.d
FROM A, (SELECT d from B limit 0,1) B
WHERE B.d >= 10