MYSQL 查询查找 RANK

标签 mysql sql

我有 2 个表 PLAYER 和 MATCHES

CREATE TABLE PLAYER 
(
id int PRIMARY KEY,
name varchar(255),
salary int
);
INSERT INTO PLAYER values(1,'MOHIT',1000);
INSERT INTO PLAYER values(2,'MNOP',2000);
INSERT INTO PLAYER values(3,'ABC',100);
INSERT INTO PLAYER values(4,'XYZ',10);

CREATE TABLE MATCHES 
(
id int,
player_id int,
scores int
);
INSERT INTO MATCHES values(1,1,100);
INSERT INTO MATCHES values(2,2,52);
INSERT INTO MATCHES values(3,3,10);
INSERT INTO MATCHES values(4,1,200);
INSERT INTO MATCHES values(5,1,300);

谁能告诉我 MYSQL 查询来查找 MOHIT 获得双世纪得分的比赛次数(200 场比赛)。

我使用了以下查询,但出现了 SQL 错误。

查询:-

 SELECT FIND_IN_SET(Select m.id from MATCHES m
  JOIN PLAYER p
  on p.id=m.player_id
  WHERE p.name='MOHIT'
  AND m.scores>=200 
  ORDER BY m.scores limit 1,(SELECT GROUP_CONCAT(
  SELECT m.id from MATCHES m 
  JOIN PLAYER p
  on p.id=m.player_id
  WHERE p.name='MOHIT'
  ))) AS RANK;

在这个查询中,我试图找到 MOHIT 得分双世纪的第一个 match_id,然后找到该 match_id 在他参加的所有比赛中的排名。

预期输出应为 2,因为 MOHIT 打了 2 场比赛得分 200 或超过 200 分。

任何帮助将不胜感激。

最佳答案

如果我的理解正确,可以使用 MYSQL COUNT() 来实现要求

SELECT COUNT(*) AS no_of_match 
FROM   matches m 
       JOIN player p 
         ON p.id = m.player_id 
WHERE  p.NAME = 'MOHIT' 
       AND m.scores >= 200;

关于MYSQL 查询查找 RANK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52135714/

相关文章:

mysql - SQL case 语句 - 多个条件

mysql - 如何在 MySQL 中使用 JSON 文档加入子查询?

sql - 如何在存储过程中创建多个 View ?

MySQL - where 子句中的排名函数

mysql - 合并 MySQL 中的两个 WordPress 用户表

mysql - 如何使用MySQL LIKE

java - 如何选择 MySQL 表中的最后一行?我没有任何自动递增键

c# - 执行 SQL 查询时显示进度条

sql - 需要有关 Northwind 数据访问层教程的更正 SQL 语法的帮助

用于快速存储文件/BLOB 的 SQL 或文件系统?