【问题标题】:MySQL using AND OR conditionalsMySQL 使用 AND OR 条件
【发布时间】:2016-04-24 07:41:41
【问题描述】:

我有一个包含 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]')";

我没有得到任何结果,

感谢您的帮助。

【问题讨论】:

  • WHERE homeTeamId IN (39,43) OR visitorTeamId IN (39, 43)

标签: php mysql ajax conditional


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

    你应该试试这样的:

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

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

    用于:

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

    【讨论】:

      【解决方案3】:

      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)
      

      返回:

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

      【讨论】:

        猜你喜欢
        • 2013-11-09
        • 2015-07-09
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-04
        相关资源
        最近更新 更多