我有 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/