MySQL复杂条件选择查询

时间:2018-10-16 17:01:30

标签: mysql rdms

我有一张表格,在其中储存球队的成绩。团队id可以是homeTeamawayTeam。我想检索一个team进行的最近5场比赛。

请参阅我的SQL提琴http://sqlfiddle.com/#!9/701305/1

enter image description here

如果您看到结果,那么我在这里尝试获取team id 165的最后5个匹配统计信息

在第一行中,165是homeTeam,您会看到homeTeamPoint(3)>awayTeamPoint(0),因此在这种情况下,如果球队输了比赛,我想同样地返回W,那么{{1} },如果有相同点,则L

所以我希望可以采用两种方式

输出:D 要么 输出可以是多行。

请帮助我,这对我来说太复杂了。

非常感谢您。

1 个答案:

答案 0 :(得分:1)

您可以使用多个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