sql查询没有返回正确的结果

时间:2014-02-01 01:13:54

标签: php mysql sql

我有一张表格,其中包含2009年至今某项体育比赛的结果。 该表包含众多列,如hometeam,awayteam,homescore,awayscore等。如下图所示:

enter image description here

如果我想显示某个团队的结果(在本例中为团队Sharks)主场和客场比赛,我会这样做:

    SELECT *
FROM `results`
WHERE `hometeam` = 'Sharks' || `awayteam` = 'Sharks'

上面的代码工作正常,我从图像中可以看到正确的结果:

enter image description here

问题

我遇到的问题是当我想只显示两个SPECIFIC球队的主场和客场比赛结果时,我得不到正确的结果。 (在下面的查询中我试图只显示当Stormers队对阵鲨鱼队时主场和客场比赛结果) 我按如下方式查询表:

SELECT *
FROM `results`
WHERE `hometeam` = 'Stormers' || `awayteam` = 'Stormers' && `hometeam` = 'Sharks' || `awayteam` = 'Sharks'

您可以从下图中看到上述查询返回错误的结果。该查询返回了团队Stormers和团队Sharks的所有主场和客场比赛对阵所有对手的结果

enter image description here

问题

我正在寻找一种方式,查询将仅返回特定团队在主场和对方之间互相比赛时的结果。示例:对于此查询,我只想显示团队Stormers的所有结果对阵鲨鱼队,无视其他所有对手。

如果有人能够如此友善地指出我正确的方向,我将不胜感激。 提前谢谢。

2 个答案:

答案 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')

这应该只返回两支球队相互比赛的比赛。