【问题标题】:Select from a table where fields don't match conditions从字段不匹配条件的表中选择
【发布时间】:2011-03-18 05:31:32
【问题描述】:

我只是想知道我可以执行什么样的 SQL 命令来从某个表中选择 A 列不等于 x 且 B 列不等于 x 的所有项目

类似:

select something from table
where columna does not equal x and columnb does not equal x

有什么想法吗?

【问题讨论】:

    标签: php mysql select


    【解决方案1】:

    或者也可以在括号内插入语句。

    SELECT * FROM tablename WHERE NOT (columnA = 'x')
    

    【讨论】:

      【解决方案2】:

      你可以用like

      NOT columnA = 'x'
      

      或者

      columnA != 'x'
      

      或者

      columnA <> 'x'
      

      和 Jeffly Bake 的查询一样,对于包含 null 值,您不必像这样写

      (NOT columnA = 'x' OR columnA IS NULL)
      

      你可以让它变得简单

      Not columnA <=> 'x'
      

      是 Null Safe equal to Operator,它包括偶数 null 值的结果。

      【讨论】:

        【解决方案3】:
        $sqlquery = "SELECT field1, field2 FROM table WHERE columnA <> 'x' AND columbB <> 'y'";
        

        我建议使用菱形运算符 () 代替 !=,因为第一个是有效的 SQL,第二个是 MySQL 添加的。

        【讨论】:

          【解决方案4】:

          你也可以用

          select * from tablename where column1 ='a' and column2!='b';
          

                     

          【讨论】:

            【解决方案5】:
            select * from table where fiels1 NOT LIKE 'x' AND field2 NOT LIKE 'y'
            

            //以不区分大小写的方式工作

            【讨论】:

              【解决方案6】:

              关键是 sql 查询,您将其设置为字符串:

              $sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'";
              

              请注意,有很多方法可以指定 NOT。另一个同样有效的是:

              $sqlquery = "SELECT field1, field2 FROM table WHERE columnA != 'x' AND columbB != 'y'";
              

              以下是如何使用它的完整示例:

              $link = mysql_connect($dbHost,$dbUser,$dbPass) or die("Unable to connect to database");
              mysql_select_db("$dbName") or die("Unable to select database $dbName");
              $sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'";
              $result=mysql_query($sqlquery);
              
              while ($row = mysql_fetch_assoc($result) {
              //do stuff
              }
              

              你可以在上面的 while 循环中做任何你想做的事情。将表的每个字段作为$row array 的元素访问,这意味着$row['field1'] 将为您提供当前行上field1 的值,$row['field2'] 将为您提供field2 的值。

              请注意,如果列可能具有NULL 值,则使用上述任何一种语法都不会找到这些值。您需要添加子句以包含 NULL 值:

              $sqlquery = "SELECT field1, field2 FROM table WHERE (NOT columnA = 'x' OR columnA IS NULL) AND (NOT columbB = 'y' OR columnB IS NULL)";
              

              【讨论】:

              • 很高兴为您提供帮助。我以代码块为例......然后我编辑了 10 次,因为我一直保存只是想“等等,我可以再添加一件事让它更清晰”
              • 如果列的默认值为NULL,这些似乎都不起作用
              猜你喜欢
              • 2015-02-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多