根据其在另一列中的存在情况在 SQL 中打印值

Posted

技术标签:

【中文标题】根据其在另一列中的存在情况在 SQL 中打印值【英文标题】:Print value in SQL depending on its presence in another column 【发布时间】:2016-11-11 00:44:36 【问题描述】:

我有一张表格

Col1  | Col2
-------------
A     |   C
B     |   A
C     |   X
D     |   A
E     |   NULL

如果 Col2 中存在 Col1 的任何元素,则它应该打印为 元素,是的。

如果 Col2 中不存在,则需要打印为元素,NO,如果对应的 col2 值为 NULL,则需要打印为元素,NULL

所以最终输出应该是这样的

A YES
B NO
C YES
D NO
E NULL

我能够为同一个查询编写三个单独的查询,但目前正在努力解决如何将它们放入 SQL 中的 Case 语句中。

SELECT Col1 FROM table WHERE col1 IN (SELECT col2 FROM table)

Select col1 FROM table where Col2 is NULL

SELECT Col1 FROM table WHERE col1 NOT IN (SELECT col2 FROM table)

我尝试将它们放在案例语句中

Select col1, Case
when (SELECT Col1 FROM table WHERE col1 IN (SELECT col2 FROM table))
then "YES"
when (Select col1 FROM table where Col2 is NULL)
then "NULL"
else
"NO"

但我遇到了一个错误。我应该如何解决这个问题?

【问题讨论】:

我删除了不兼容的数据库标签。请仅使用您真正使用的数据库进行标记。 【参考方案1】:

我希望查询看起来像这样:

select col1,
       (case when col2 is null then NULL
             when col1 in (select t2.col2 from t t2)
             then 'YES'
             else 'NO'
        end)
from t;

【讨论】:

以上是关于根据其在另一列中的存在情况在 SQL 中打印值的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 中,我可以在另一列中获取与它们没有关联的特定值的列中的值吗?

如果一列中存在数字,则在另一列中查找与该数字相对应的值

检查一列中的值是不是存在于另一列中,如果存在,则将另一列中的值复制到新列中

如何根据 Row_id 列将值写入数据框的另一列并且匹配列中存在值?

根据另一列中的值从一列中减去值(SQL)

根据另一列中的值比较一列中的两个值