J'ai une liste user_id
de N
entiers, par ex.MySQL: un moyen de transformer ces N requêtes en moins de requêtes?
[1001, 1023, 13452, 1679834, ...]
et une table:
CREATE TABLE content (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
user_id INT,
content VARCHAR(100),
score INT
);
Je dois prendre ces N
entiers de user_id
et pour chaque user_id
obtenir le top 3 content
qui a le plus score
. Donc, fondamentalement, je dois exécuter cette requête N
fois:
SELECT *
FROM content
WHERE user_id=1001
ORDER BY score DESC
LIMIT 3;
N
pourrait être un très grand nombre. Donc, je voudrais vraiment éviter d'exécuter ces requêtes une par une.
Y at-il un moyen de réduire le nombre de requêtes que je dois exécuter? Une sorte de masse choisir peut-être?
Regardez à travers la balise 'most-n-per-group' – newtover
oui, par exemple http://stackoverflow.com/questions/5319643/top-n-per-group-with-multiple-table-joins – Daan
autre : http://stackoverflow.com/questions/1442527/how-to-select-the-newest-four-items-per-category/1442867#1442867 – newtover