当另一列包含SQl中的值时,如何过滤出列值

时间:2020-06-28 00:54:17

标签: sql toad

如果存在另一列中的值,如何过滤出一列中的值?我尝试删除“代码”列中的所有C(如果在“描述”列中带有“-”)。

CODE |  Description
A      -
A      -
B      -
B      -
C      stuff
C      -

如果“说明”为“-”,我想在“代码”列中删除值“ C”。

最终结果类似于删除了C&-的下表。

CODE |  Description
A      -
A      -
B      -
B      -
C      stuff

值得注意的是,“描述”列是使用CASE WHEN的自定义字段。

在excel中,我只创建一个虚拟条件列,然后过滤掉'C'&'-'。我不确定如何在SQL中执行此操作。

3 个答案:

答案 0 :(得分:1)

尝试:

SELECT CODE, Description 
FROM your_table_name 
WHERE (CODE Not Like 'C' And Description Not Like '-');

此外,我建议保留相同情况的字段/列名称,例如“代码”和“描述”或“代码”和DESCRIPTION。这是更好的做法。

答案 1 :(得分:1)

一种表达这种方式的方法是使用not

where not (code = 'C' and Description = '-')

这似乎与您所表达的逻辑非常接近。

这等效于:

where code <> 'C' or Description <> '-')

请注意,这两个解决方案均假设codedescription不是NULL。也可以对其进行修改以处理该问题,但是根据问题中的数据,这似乎不是必需的。

答案 2 :(得分:1)

    select 
    t1.Code,
    t1.Description
    from MyTable t1
    where t1.code not in (select code from MyTable where Description not like '-') 
    union All
    select * from MyTable
    where Description not like '-'
    order by code asc

主要:

primary

结果:

Result