Mysql SQL:限制一个表的结果

Mysql SQL:限制一个表的结果,mysql,sql,distinct,limit,Mysql,Sql,Distinct,Limit,我有一个简单的问题: SELECT c.nom AS race_name, r.nom_coureur AS player_name, r.prenom_coureur AS player_name_first FROM pourvelobsx.calendrier AS c INNER JOIN pourvelobsx.resultat_autre AS r ON r.identifiant_epreuve = c.identifiant WHE

我有一个简单的问题:

SELECT 
    c.nom AS race_name, 
    r.nom_coureur AS player_name, 
    r.prenom_coureur AS player_name_first
FROM pourvelobsx.calendrier AS c    
INNER JOIN pourvelobsx.resultat_autre AS r 
    ON r.identifiant_epreuve = c.identifiant
WHERE nom_etape = "final"
ORDER BY c.id DESC
LIMIT 5
查询返回5行:

+------------------+-------------+-------------------+
| race_name        | player_name | player_name_first |
+------------------+-------------+-------------------+
| Watashi wa Alex  | BARBAS      | Yoann             |
| Watashi wa Alex  | AHLSTRAND   | Jonas             |
| Watashi wa Alex  | ACEVEDO     | Janier Alexis     |
| Tour de La Baule | CHAVANEL    | Sylvain           |
| Tour de La Baule | SANCHEZ     | Samuel            |
+------------------+-------------+-------------------+
我想知道,我如何限制比赛的结果(“日历”表),而不是全局行结果

像这样:

+------------------+-------------+-------------------+
| race_name        | player_name | player_name_first |
+------------------+-------------+-------------------+
| Watashi wa Alex  | BARBAS      | Yoann             |
| Watashi wa Alex  | AHLSTRAND   | Jonas             |
| Watashi wa Alex  | ACEVEDO     | Janier Alexis     |
| Tour de La Baule | CHAVANEL    | Sylvain           |
| Tour de La Baule | SANCHEZ     | Samuel            |
| Tour de La Groin | HELLO       | Calvin            |
| Tour de La Groin | ESTEBEZ     | Millo             |
| Tour de France   | SANCHEZ     | Samuel            |
| Tour de France   | SICKED      | Alex              |
| Tour d'Espagne   | VILLIOD     | Fred              |
| Tour d'Espagne   | CRACHER     | Jordan            |
| Tour d'Espagne   | ELBANTI     | Maxime            |
| Tour d'Espagne   | BOKEDRON    | Yohan             |
+------------------+-------------+-------------------+

所以我只有5场比赛没有限制行数。我尝试了
DISTINCT
,但没有成功。

我相信你想要这样的东西

SELECT 
  c.nom AS race_name, 
  r.nom_coureur AS player_name, 
  r.prenom_coureur AS player_name_first
FROM pourvelobsx.calendrier AS c    
INNER JOIN pourvelobsx.resultat_autre AS r ON r.identifiant_epreuve = c.identifiant
INNER JOIN
(
  SELECT c.nom
  FROM pourvelobsx.calendrier AS c   
  INNER JOIN pourvelobsx.resultat_autre AS r ON r.identifiant_epreuve = c.identifiant     
  WHERE nom_etape = "final"
  GROUP BY c.nom
  ORDER BY c.id DESC
  LIMIT 5
) t ON t.nom = c.nom
WHERE nom_etape = "final"

那么你想显示所有5场比赛?哪个MySQL版本?(他们不是最近才添加窗口功能吗?)你想要什么输出?看看为什么后期会被否决?Cookie怪物是的Prateik它在邮局里@jarlh,最后一个:)您不能在
WHERE col in
子查询中使用
LIMIT
。您需要连接子查询。它工作得很好,谢谢,但是为什么我必须做两个内部连接?@Dinath第一个连接在
calendrier
resultat\u autre
之间,第二个连接在
resultat\u autre
t
子查询之间。附言:不客气:)@RadimBača哦,我明白了!很难。。。那么性能呢?再次感谢:)