Bạn không thể sử dụng bí danh cột trong WHERE
mệnh đề.
Vì vậy, bạn có thể bọc truy vấn của mình trong một lựa chọn bên ngoài và áp dụng điều kiện của bạn ở đó
SELECT *
FROM
(
SELECT a, b, c,
(SELECT d FROM B LIMIT 0,1) d
FROM A
) q
WHERE d >= 10
hoặc bạn có thể giới thiệu điều kiện đó trong HAVING
mệnh đề thay thế
SELECT a, b, c,
(SELECT d FROM B LIMIT 0,1) d
FROM A
HAVING d >= 10
Tuy nhiên, một cách tiếp cận khác là sử dụng CROSS JOIN
và áp dụng điều kiện của bạn trong WHERE
mệnh đề
SELECT a, b, c, d
FROM A CROSS JOIN
(
SELECT d FROM B LIMIT 0,1
) q
WHERE d >= 10
Đây là SQLFiddle demo cho tất cả các truy vấn được đề cập ở trên.