关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
11个月前关门了。
改进这个问题
我只是想知道是否有可能使该请求更简短,因为我想用该请求创建一个视图
SELECT distinct joueurs.nom, joueurs.prenom, joueurs.numero,joueurs.moyenne, equipes.nom
FROM joueurs
JOIN equipes ON equipes.equipeId = joueurs.equipeId
WHERE joueurs.equipeid = 1
ORDER BY joueurs.moyenne DESC
LIMIT 3;
SELECT distinct joueurs.nom, joueurs.prenom, joueurs.numero,joueurs.moyenne, equipes.nom
FROM joueurs
JOIN equipes ON equipes.equipeId = joueurs.equipeId
WHERE joueurs.equipeid = 2
ORDER BY joueurs.moyenne DESC
LIMIT 3;
SELECT distinct joueurs.nom, joueurs.prenom, joueurs.numero,joueurs.moyenne, equipes.nom
FROM joueurs
JOIN equipes ON equipes.equipeId = joueurs.equipeId
WHERE joueurs.equipeid = 3
ORDER BY joueurs.moyenne DESC
LIMIT 3;
1条答案
按热度按时间kse8i1jr1#
如果您使用的是mysql 8.0,那么可以使用window函数
row_number
```SELECT
distinct joueurs.nom,
joueurs.prenom,
joueurs.numero,
joueurs.moyenne,
equipes.nom
from
(
SELECT
distinct joueurs.nom,
joueurs.prenom,
joueurs.numero,
joueurs.moyenne,
equipes.nom,
row_number() over (partition by joueurs.equipeid order by joueurs.moyenne DESC) as rnk
FROM joueurs
JOIN equipes
ON equipes.equipeId = joueurs.equipeId
WHERE joueurs.equipeid IN (1, 2, 3)
) val
where rnk <= 3