我正在构建一个带有一些参数的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。
答案 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列来实现这一目标。