根据其在另一列中的存在情况在 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 中,我可以在另一列中获取与它们没有关联的特定值的列中的值吗?
检查一列中的值是不是存在于另一列中,如果存在,则将另一列中的值复制到新列中