MySQL 使用 AND OR 条件

MySQL using AND OR conditionals

我有一个 table,其中包含列 homeTeamId 和 visitorTeamId。

我想显示 homeTeamId = 39 或 43 AND visitorTeamId = 39 或 43 的行

$sql ="SELECT * FROM game WHERE (homeTeamId='$_GET[homeTeamId]' or '$_GET[visitorTeamId]' and visitorTeamId='$_GET[homeTeamId]' or '$_GET[visitorTeamId]')";

给我

homeTeamName    visitorTeamName visitorTeamId   homeTeamId  visitorTeamScore    homeTeamScore   date

barrard teamName0   39  43  0   0   2016 01/17 09:41 pm
teamName0   barrard 43  39  0   0   2016 01/17 10:18 pm
teamName0   barrard 43  39  0   0   2016 01/17 10:26 pm

但是,如果我使用 39 和 20 之类的东西,我会得到完全相同的结果。

我试过这种方法

$sql ="SELECT * FROM game WHERE homeTeamId=('$_GET[homeTeamId]' or '$_GET[visitorTeamId]') and visitorTeamId=('$_GET[homeTeamId]' or '$_GET[visitorTeamId]')";

我没有得到结果,

感谢您的帮助。

你应该尝试这样的事情:

$sql ="SELECT * FROM game WHERE (homeTeamId='$_GET[homeTeamId]' OR homeTeamId='$_GET[visitorTeamId]') AND (visitorTeamId='$_GET[homeTeamId]' OR visitorTeamId'$_GET[visitorTeamId]')";

或使用较短的方法 IN,post在您的 post 下作为评论! 使用 IN,您可以实现更复杂的查询。

用于:

$sql = "SELECT * FROM game WHERE homeTeamId IN ('$_GET[homeTeamId]', 
       '$_GET[visitorTeamId]') AND visitorTeamId IN ('$_GET[homeTeamId]', 
       '$_GET[visitorTeamId]')";

试试这个:

$sql ="SELECT * FROM game WHERE 
(homeTeamId='$_GET[homeTeamId]' OR homeTeamId='$_GET[visitorTeamId]')
AND 
(visitorTeamId='$_GET[homeTeamId]' OR visitorTeamId='$_GET[visitorTeamId]')";

MySQL 运算符具有 优先顺序 。这意味着某些运算符先于其他运算符求值。

我们可以使用括号来指定我们希望运算符计算的顺序,以覆盖默认顺序。

考虑:

 SELECT '0 AND 1 OR 1'   AS cond, 0 AND 1 OR 1 
 UNION ALL
 SELECT '(0 AND 1) OR 1' AS cond, (0 AND 1) OR 1 
 UNION ALL
 SELECT '0 AND (1 OR 1)' AS cond, 0 AND (1 OR 1)

returns:

cond            0 AND 1 OR 1  
--------------  ------------
 0 AND 1 OR 1               1
 (0 AND 1) OR 1             1
 0 AND (1 OR 1)             0