簡體   English   中英

MySQL LIMIT使用SELECT COUNT(*)作為SELECT中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM