-1

我正在构建一个带有一些参数的 SQL 语句。最后,创建一个 SQL 语句,如 "select * from table where column1 = "xyz"“.

但我还需要使用此语句过滤的行。在这种情况下,它们是 column1 中没有“xyz”值的行。更具体地说,我正在寻找类似INVERSE(select * from table where ...). 是否可以?

编辑:我的错,我知道我可以用 != 或运算符来做到这一点。在这种情况下,select 语句可能更复杂(使用一些 AND 和相等、更大的运算符)。假设一个表有 A、B、C,而我的 SQL 语句只产生 A 作为结果。但是我需要 B 和 C,而我只有带 A 的语句。

4

5 回答 5

1

select * from table where column1 != 'xyz' or column1 is null;

于 2012-06-25T13:57:10.910 回答
0

如果你想要其他的,这样做:

select * from table where column1 <> "xyz"

column1 <>(不同于)“xyz”

于 2012-06-25T13:52:22.007 回答
0

要检查某些东西是否不相等,您可以使用<>甚至!=

SELECT *
FROM yourTable
WHERE <> 'xyz'

或者

SELECT *
FROM yourTable
WHERE != 'xyz'

许多数据库供应商都支持(见列表) 这两个版本的语法。

于 2012-06-25T13:56:32.977 回答
0

如果您大约同时检索两个结果集,并且只想先处理这些结果集xyz,您可以这样做:

select *,CASE WHEN column1 = "xyz" THEN 1 ELSE 0 END as xyz from table
order by CASE WHEN column1 = "xyz" THEN 1 ELSE 0 END desc

这将返回一个结果集中的所有行。虽然xyz= 1,但这些是column1=的行'xyz'

于 2012-06-25T14:08:11.510 回答
0

它是 :

"select * from table where rowId NOT IN (select rowId from table where column1 = "xyz")

我需要一个唯一的 rowId 列来实现这一点。

于 2012-06-28T15:09:58.480 回答