[英]MySQL LIMIT using SELECT COUNT(*) as value within SELECT
嘗試做這樣的事情:
SELECT * FROM events WHERE
start_time >= DATE_SUB(NOW(),INTERVAL 6 HOUR)
LIMIT
(
SELECT COUNT(*) FROM events WHERE
start_time >= DATE_SUB(NOW(),INTERVAL 6 HOUR)
AND
start_time < NOW()
)+100
ORDER BY start_time ASC;
雖然不適合我。
我認為您正在嘗試執行以下操作:
SELECT e.*
FROM events e
WHERE e.start_time >= DATE_SUB(NOW(), INTERVAL 6 HOUR) AND
e.start_time < NOW()
UNION ALL
(SELECT e.*
FROM events e
WHERE e.start_time >= NOW()
ORDER BY e.start_time
LIMIT 100
)
ORDER BY start_time;
您不能將子查詢用作limit
參數。
像您一樣,不可能將查詢用作LIMIT函數的變量。 我會建議這樣的查詢:
SELECT *
FROM events
WHERE (
start_time >= DATE_SUB(NOW(),INTERVAL 6 HOUR) AND
start_time < NOW()
)
UNION ALL (
SELECT *
FROM events
WHERE start_time >= NOW()
ORDER BY start_time
LIMIT 100
)
ORDER BY start_time ASC;
這是一個有效的sqlfiddle。
您可以設置一個極限變量並使用它。
SET @limit= (
SELECT COUNT(*) FROM events WHERE
start_time >= DATE_SUB(NOW(),INTERVAL 6 HOUR)
AND
start_time < NOW()
)+100;
SELECT * FROM events WHERE
start_time >= DATE_SUB(NOW(),INTERVAL 6 HOUR)
LIMIT @limit
ORDER BY start_time ASC;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.