[英]MySQL multiple ORDER BY conditions with limit for each condition
我有具有以下字段的實體Product
(映射到表product
):
我需要創建一個分頁儀表板,每頁有 20 個元素(並且沒有重復)。 現在我正在做 3 個不同的查詢來提取,然后將以下項目組合在一個列表中:
WHERE id NOT IN
WHERE id NOT IN
我想創建一個查詢來提取所有 20 個以前的項目。 可能嗎?
我正在使用 MySQL 和 Doctrine (Symfony),我會對一個與Doctrine 兼容的解決方案感興趣。
我認為不可能在單個查詢中完成。 如果總帖子的數量有限(比如儀表板中只有 100 個帖子可見),我會使用數組方法的組合。
這需要使用UNION
,這意味着您不能擁有與 Doctrine 兼容的解決方案。
核心方法與您在應用程序級別所做的相同,只是更丑。 要獲得完全相同的行為,您必須執行類似的操作
SELECT [text of first query]
UNION
SELECT [text of second query]
WHERE `id` NOT IN (
SELECT `id` FROM (SELECT [text of first query])
)
UNION
SELECT [text of third query]
WHERE `id` NOT IN (
SELECT `id` FROM (SELECT [text of first query])
)
AND `id` NOT IN (
SELECT (SELECT `id` FROM [text of second query])
)
這意味着第一個查詢獨立執行了三次,第二個查詢執行了兩次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.