我有一张表格,其中包含2009年至今某项体育比赛的结果。 该表包含众多列,如hometeam,awayteam,homescore,awayscore等。如下图所示:
如果我想显示某个团队的结果(在本例中为团队Sharks)主场和客场比赛,我会这样做:
SELECT *
FROM `results`
WHERE `hometeam` = 'Sharks' || `awayteam` = 'Sharks'
上面的代码工作正常,我从图像中可以看到正确的结果:
问题
我遇到的问题是当我想只显示两个SPECIFIC球队的主场和客场比赛结果时,我得不到正确的结果。 (在下面的查询中我试图只显示当Stormers队对阵鲨鱼队时主场和客场比赛结果) 我按如下方式查询表:
SELECT *
FROM `results`
WHERE `hometeam` = 'Stormers' || `awayteam` = 'Stormers' && `hometeam` = 'Sharks' || `awayteam` = 'Sharks'
您可以从下图中看到上述查询返回错误的结果。该查询返回了团队Stormers和团队Sharks的所有主场和客场比赛对阵所有对手的结果
问题
我正在寻找一种方式,查询将仅返回特定团队在主场和对方之间互相比赛时的结果。示例:对于此查询,我只想显示团队Stormers的所有结果对阵鲨鱼队,无视其他所有对手。
如果有人能够如此友善地指出我正确的方向,我将不胜感激。 提前谢谢。
答案 0 :(得分:3)
我看起来你的逻辑错误。试试这个:
SELECT *
FROM `results`
WHERE (`hometeam` = 'Stormers' AND `awayteam` = 'Sharks')
OR (`hometeam` = 'Sharks' AND `awayteam` = 'Stormers')
答案 1 :(得分:2)
你可以这样做:
SELECT *
FROM `results`
WHERE `hometeam` IN ('Stormers', 'Sharks')
AND `awayteam` IN ('Stormers', 'Sharks')
这应该只返回两支球队相互比赛的比赛。