从字段不匹配条件的表中选择

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,这些似乎都不起作用

以上是关于从字段不匹配条件的表中选择的主要内容,如果未能解决你的问题,请参考以下文章

SQL Query 从不同的表中选择相同的数据,显示所有记录,但显示/显示匹配

从不同的表中选择字段

如何从 EF 中的表中仅选择某些字段

根据sql中的条件从不同的表中选择一个值

从两个表中选择不匹配的列值

查询从两个表中选择不匹配的记录