SQL在单个查询中从两个不同的ID检索信息
假设我有一个代表足球比赛的表(本例中为X_训练),其中有客场队id和主场队id,这些id指向另一个表“团队属性” 我通过查询只选择了一个团队的属性,但我对获取两个团队的属性都感兴趣 这是我现在使用的查询:SQL在单个查询中从两个不同的ID检索信息,sql,Sql,假设我有一个代表足球比赛的表(本例中为X_训练),其中有客场队id和主场队id,这些id指向另一个表“团队属性” 我通过查询只选择了一个团队的属性,但我对获取两个团队的属性都感兴趣 这是我现在使用的查询: SELECT X_Train.* , Team_Attributes.*, MAX(Team_Attributes.date) FROM X_Train LEFT JOIN Team_Attributes ON X_Train.home_team_api_id =
SELECT
X_Train.* , Team_Attributes.*, MAX(Team_Attributes.date)
FROM
X_Train
LEFT JOIN
Team_Attributes ON X_Train.home_team_api_id = Team_Attributes.team_api_id
AND Team_Attributes.date <= X_Train.date
GROUP BY
X_Train.id
ORDER BY
X_Train.date
选择
X_列。*,团队属性。*,最大值(团队属性.日期)
从…起
火车
左连接
X_列车上的团队属性。主页团队api_id=团队属性。团队api_id
和Team_Attributes.date您需要第二次加入。为此,为了简化查询,请使用表别名:
SELECT t.*, hta.*, ata.*
FROM X_Train t LEFT JOIN
Team_Attributes hta
ON t.home_team_api_id = hta.team_api_id AND
hta.date <= t.date LEFT JOIN
Team_Attributes ata
ON t.away_team_api_id = ata.team_api_id AND
ata.date <= t.date
ORDER BY t.date DESC;
选择t.*、hta.*、ata*
从X_列车左转
hta团队
在t.home\u team\u api\u id=hta.team\u api\u id上
hta.date您需要第二次加入。为此,为了简化查询,请使用表别名:
SELECT t.*, hta.*, ata.*
FROM X_Train t LEFT JOIN
Team_Attributes hta
ON t.home_team_api_id = hta.team_api_id AND
hta.date <= t.date LEFT JOIN
Team_Attributes ata
ON t.away_team_api_id = ata.team_api_id AND
ata.date <= t.date
ORDER BY t.date DESC;
选择t.*、hta.*、ata*
从X_列车左转
hta团队
在t.home\u team\u api\u id=hta.team\u api\u id上
hta.date Group by确保没有重复的行;)Group by确保没有重复的行;)