从字段不匹配条件的表中选择
Posted
技术标签:
【中文标题】从字段不匹配条件的表中选择【英文标题】: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
有什么想法吗?
【问题讨论】:
【参考方案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
,这些似乎都不起作用以上是关于从字段不匹配条件的表中选择的主要内容,如果未能解决你的问题,请参考以下文章