MySQL 复杂条件 select 查询
MySQL complex conditional select query
我有一个 table 存储团队结果的地方。一个团队 id
可以是 homeTeam
或 awayTeam
。我想检索 team
参加的最后 5 场比赛。
请看我的SQLfiddlehttp://sqlfiddle.com/#!9/701305/1
如果你看到结果,这里我正在尝试获取 team id 165
的最后 5 场比赛统计数据
在第一行,165 是 homeTeam
你可以看到 homeTeamPoint(3)>awayTeamPoint(0)
所以在这种情况下我想 return W
同样如果球队输了它应该 L
如果相同点则 D
所以我期待的输出可以有两种方式
输出:W,L,W,W,L
要么
输出可以是多行..
请帮助我,这对我来说太复杂了。
非常感谢。
您可以使用多个CASE .. WHEN
语句从team_id = 65
的角度得到结果。
SELECT
homeTeam,
awayTeam,
homeTeamPoint,
awayTeamPoint,
CASE
WHEN homeTeamPoint = awayTeamPoint
THEN 'D'
WHEN `homeTeam` = 165 AND homeTeamPoint > awayTeamPoint
THEN 'W'
WHEN `homeTeam` = 165 AND homeTeamPoint < awayTeamPoint
THEN 'L'
WHEN `awayTeam` = 165 AND homeTeamPoint < awayTeamPoint
THEN 'W'
WHEN `awayTeam` = 165 AND homeTeamPoint > awayTeamPoint
THEN 'L'
END AS result
FROM fixtureandresults
WHERE (`homeTeam` = 165 OR awayTeam=165)
AND over = 1
ORDER BY id DESC LIMIT 5
DB Fiddle DEMO
我有一个 table 存储团队结果的地方。一个团队 id
可以是 homeTeam
或 awayTeam
。我想检索 team
参加的最后 5 场比赛。
请看我的SQLfiddlehttp://sqlfiddle.com/#!9/701305/1
如果你看到结果,这里我正在尝试获取 team id 165
在第一行,165 是 homeTeam
你可以看到 homeTeamPoint(3)>awayTeamPoint(0)
所以在这种情况下我想 return W
同样如果球队输了它应该 L
如果相同点则 D
所以我期待的输出可以有两种方式
输出:W,L,W,W,L
要么
输出可以是多行..
请帮助我,这对我来说太复杂了。
非常感谢。
您可以使用多个CASE .. WHEN
语句从team_id = 65
的角度得到结果。
SELECT
homeTeam,
awayTeam,
homeTeamPoint,
awayTeamPoint,
CASE
WHEN homeTeamPoint = awayTeamPoint
THEN 'D'
WHEN `homeTeam` = 165 AND homeTeamPoint > awayTeamPoint
THEN 'W'
WHEN `homeTeam` = 165 AND homeTeamPoint < awayTeamPoint
THEN 'L'
WHEN `awayTeam` = 165 AND homeTeamPoint < awayTeamPoint
THEN 'W'
WHEN `awayTeam` = 165 AND homeTeamPoint > awayTeamPoint
THEN 'L'
END AS result
FROM fixtureandresults
WHERE (`homeTeam` = 165 OR awayTeam=165)
AND over = 1
ORDER BY id DESC LIMIT 5