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
我有一个 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