Mysql 使用多个表按日期排序
我正在整理一个查询,以返回为运动队效力的前10名最年轻球员的列表 到目前为止,我已经通过使用表“出场次数””来做到这一点,该表包含一名球员(包含在球员表中)为首发队出场时的一行实例,通过使用DATEDIFF比较玩家的出生日期与比赛的比赛日期,然后根据此结果排序行,即最年轻的玩家已经参加过比赛。这似乎是正常的工作本身的一般外观 我现在面临的问题是,我还需要考虑球员作为替补出场的时间(替补表)。我创建了一个联合来查询出场和替补表——这确实会将准确的数据返回到某个点,但有一个例外——它会列出同一名球员两次,一行代表他们的最早出场,另一行代表他们的最早替补出场 我正在寻找如何最好地修改此查询的指导,以便每个玩家只返回一行。i、 e.如果其替换外观在其开始外观之前,则该外观是唯一应返回的外观 这就是我刚才运行的查询。服务器版本:5.7.32Mysql 使用多个表按日期排序,mysql,union,datediff,Mysql,Union,Datediff,我正在整理一个查询,以返回为运动队效力的前10名最年轻球员的列表 到目前为止,我已经通过使用表“出场次数””来做到这一点,该表包含一名球员(包含在球员表中)为首发队出场时的一行实例,通过使用DATEDIFF比较玩家的出生日期与比赛的比赛日期,然后根据此结果排序行,即最年轻的玩家已经参加过比赛。这似乎是正常的工作本身的一般外观 我现在面临的问题是,我还需要考虑球员作为替补出场的时间(替补表)。我创建了一个联合来查询出场和替补表——这确实会将准确的数据返回到某个点,但有一个例外——它会列出同一名球员
(
SELECT
DISTINCT A.AppearancePlayerID AS id,
CONCAT(P.PlayerFirstName, ' ', P.PlayerLastName) AS playername,
DATEDIFF(MIN(M.MatchDateTime), P.PlayerDOB) AS age_diff,
P.PlayerDOB AS player_dob,
MIN(M.MatchDateTime) AS match_date
FROM
appearances A, matches M, players P
WHERE
A.AppearanceMatchID = M.MatchID AND
P.PlayerID = A.AppearancePlayerID AND
DATE_FORMAT(P.PlayerDOB, '%d') != '00'
GROUP BY id
)
UNION
(
SELECT
DISTINCT S.SubstitutionPlayerIDIn AS id,
CONCAT(P.PlayerFirstName, ' ', P.PlayerLastName) AS playername,
DATEDIFF(MIN(M.MatchDateTime), P.PlayerDOB) AS age_diff,
P.PlayerDOB AS player_dob,
MIN(M.MatchDateTime) AS match_date
FROM
substitutions S, matches M, players P
WHERE
S.SubstitutionMatchID = M.MatchID AND
P.PlayerID = S.SubstitutionPlayerIDIn AND
DATE_FORMAT(P.PlayerDOB, '%d') != '00'
GROUP BY id
)
ORDER BY age_diff ASC
LIMIT 0,10