2014-10-26 32 views
0

我的目標是從一個表的N個寄存器的給定子集中獲得n個「最好」的項目。我有一張名爲食譜的表格,我想要得到最後5個最佳食譜(最喜歡的食譜),比方說,上傳50個食譜。 只有澄清,這將是這樣的:Mysql:獲得N個記錄的給定子集的n個元素

SELECT * FROM `recipes` 
WHERE id IN 
    (SELECT id FROM `recipes` ORDER BY created DESC LIMIT 50) 
ORDER BY likes DESC LIMIT 5 

但限制不能在子查詢中使用。那麼,實現這個目標的最簡單方法是什麼?提前致謝。

回答

1

你可以用相同的聯接

SELECT * FROM `recipes` R1 
JOIN 
(SELECT id FROM `recipes`  ORDER BY created DESC LIMIT 50) R2 
ON R1.id =R2.id 
ORDER BY R1.likes DESC LIMIT 5 
+0

不是批評只是要求,可以爲您解釋爲什麼它不能做有一個查詢我知道我的答案是錯誤的,但只是爲了學習? @RADAR – 2014-10-26 19:28:51

+0

正是我想要的。謝謝! – 2014-10-26 19:34:33

1

你想做的事,而不做什麼join

SELECT r.* 
FROM (SELECT r.* 
     FROM recipes 
     ORDER BY created DESC 
     LIMIT 50 
    ) r 
ORDER BY likes DESC 
LIMIT 5; 
相關問題