使用SQL选择已过滤的行

时间:2012-06-25 13:14:07

标签: sql

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

但我还需要使用此语句过滤的行。在这种情况下,它们是在column1中不是“xyz”的行。更具体地说,我正在寻找像INVERSE(select * from table where ...)这样的东西。有可能吗?

编辑:我的不好,我知道我可以用!=或操作员。在这种情况下,select语句可能更复杂(有些ANDs和相等,更大的运算符)。假设一个表有A,B,C,我的SQL语句只带来A作为结果。但是我需要B和C,而我只有声明带来A。

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

select * from table where column1 <> "xyz"

column1&lt;&gt; (不同于)“xyz”

答案 2 :(得分:0)

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

SELECT *
FROM yourTable
WHERE <> 'xyz'

OR

SELECT *
FROM yourTable
WHERE != 'xyz'

许多数据库供应商support (see list)两种语法版本。

答案 3 :(得分: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'

答案 4 :(得分:0)

是:

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

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