0
我有一個關於查詢,我想只顯示數據,其中的一個子查詢的數量必須大於0MySQL的子查詢作爲標準
我有這樣的SQL查詢的一個問題:
SELECT
t.id AS t__id,
t.state_code AS t__state_code,
t.number AS t__number,
t.meta AS t__meta,
t.date_created AS t__date_created,
(SELECT
COUNT(t2.id) AS t2__0
FROM tbl_messages t2
LEFT JOIN tbl_services t3
ON t2.service_id = t3.id
WHERE (t2.inbound_time BETWEEN "2011-01-31 16:00:00"
AND "2011-02-28 15:59:59"
AND t2.subscriber = t.number
AND t3.pool_id = 48)) AS t__0
FROM tbl_subscribers t
WHERE (TRUE)
ORDER BY t__0 DESC
LIMIT 100;
我想只顯示t__0> 0的數據......我如何在這個查詢中應用它?
我想這查詢,但它不工作:
SELECT
t.id AS t__id,
t.state_code AS t__state_code,
t.number AS t__number,
t.meta AS t__meta,
t.date_created AS t__date_created,
(SELECT
COUNT(t2.id) AS t2__0
FROM tbl_messages t2
LEFT JOIN tbl_services t3
ON t2.service_id = t3.id
WHERE (t2.inbound_time BETWEEN "2011-01-31 16:00:00"
AND "2011-02-28 15:59:59"
AND t2.subscriber = t.number
AND t3.pool_id = 48)) AS t__0
FROM tbl_subscribers t
WHERE (t__0 > 0)
ORDER BY t__0 DESC
LIMIT 100
;
它返回一個錯誤:
Query : SELECT t.id AS t__id, t.state_code AS t__state_code, t.number AS t__number, t.meta AS t__m...
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'having t__0 > 0
LIMIT 100' at line 19
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
這解決了問題。但是如果有的話我碰到一個場景,我必須使用子查詢的結果作爲主查詢條件中的條件的基礎,該怎麼做? – 2011-02-10 08:21:42