Mysql 把要求缩短一点?

Mysql 把要求缩短一点?,mysql,sql,database,Mysql,Sql,Database,我只是想知道是否有可能使该请求更短,因为我想用该请求创建一个视图 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

我只是想知道是否有可能使该请求更短,因为我想用该请求创建一个视图

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;

如果您使用的是MySQL 8.0,那么可以使用窗口函数row_number


如果您使用的是MySQL 8.0,那么可以使用窗口函数row_number


不使用UNION**您使用的是哪个版本的mysql?请参阅不使用UNION**您使用的是哪个版本的mysql?请参阅
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