首页 > 解决方案 > 如何在另一列的基础上写一个where?

问题描述

我有两列的表:col1col2

我想创建选择返回所有行,除了我有col1 != foobarANDcol2bar_idor foo_id

但无论我做什么,它都不起作用:

select * from table1 where col1 != 'foobar' and (col2 = 'bar_id' or col2 = 'foo_id')

select * from table1 where (col2 = 'bar_id' or col2 = 'foo_id') and col1 = 'foobar'

SELECT * FROM table1 WHERE NOT col1 = 'foobar' AND (col2 = 'bar_id' OR col2 = 'foo_id');

那么我应该如何编写正确的sql select呢?我想('foobar', 'foo_id'), ('foobar', 'bar_id')从结果中删除。

sqlfiddle

预期结果:

在此处输入图像描述 sql

CREATE TABLE Table1
    ([col1] varchar(6), [col2] varchar(11))
;
    
INSERT INTO Table1
    ([col1], [col2])
VALUES
    ('bar', 'text'),
    ('foo', 'foo_id'),
    ('foo', 'description'),
    ('foobar', 'foo_id'),
    ('foobar', 'bar_id'),
    ('foobar', 'update')
;

标签: sqlsql-server

解决方案


尝试一下

SELECT * FROM table1 WHERE NOT col1 = 'foobar' AND (col2 = 'bar_id' OR col2 = 'foo_id');

推荐阅读