我有一個列表user_id
的整數,例如N
。MySQL:以任何方式將這些N個查詢變成更少的查詢?
[1001, 1023, 13452, 1679834, ...]
和表:
CREATE TABLE content (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
user_id INT,
content VARCHAR(100),
score INT
);
我需要那些N
整數從user_id
和每個user_id
獲得前3 content
具有最高score
。所以基本上我需要運行此查詢N
時間:
SELECT *
FROM content
WHERE user_id=1001
ORDER BY score DESC
LIMIT 3;
N
可能是一個非常大的數字。所以我非常想避免一個一個地運行這些查詢。
有什麼辦法可以減少我需要運行的查詢次數嗎?某種批量選擇也許?
通過「每個組最大的標籤」標籤 – newtover 2012-03-21 21:52:21
是的,例如http://stackoverflow.com/questions/5319643/top-n-per-group-with-multiple-table-joins – Daan 2012-03-21 21:56:08
另一個:http://stackoverflow.com/questions/1442527/how-to-select-the-newest-four-items-per-category/1442867#1442867 – newtover 2012-03-21 22:25:28