根据同一行中的另一个值从行中选择某个值
Posted
技术标签:
【中文标题】根据同一行中的另一个值从行中选择某个值【英文标题】:Selecting certain value from row based on another value in same row 【发布时间】:2019-06-04 16:50:53 【问题描述】:我有一个包含以下数据的表格:
表格
现在我想获取所有那些在 B 列中没有值 5 的用户(仅不同)。我的意思是 user1 在某行中有值 5,然后所有用户 1 行都被解雇。
应产生以下结果: user2(因为值为空) user3(无值 5)
我该怎么做?
【问题讨论】:
【参考方案1】:也许最简单的方法是按用户聚合:
SELECT ColumnA
FROM yourTable
GROUP BY ColumnA
HAVING COUNT(CASE WHEN ColumnB = 5 THEN 1 END) = 0;
【讨论】:
【参考方案2】:一种方法是聚合:
select columnA
from t
group by columnA
having sum(case when columnB = 5 then 1 else 0 end) = 0;
【讨论】:
感谢您的回复...所以听起来可能需要一段时间(不像 100K,它基本上是自动的)。【参考方案3】:您可以通过减号运算符来做到这一点
SELECT distinct colA
FROM have
WHERE colB not in(5)
MINUS
SELECT distinct colA
FROM have
WHERE colB=5;
【讨论】:
【参考方案4】:使用NOT EXISTS
可以得到结果
SELECT DISTINCT T1.ColumnA
FROM TableName T1
WHERE NOT EXISTS (
SELECT * FROM TableName T2 WHERE T2.ColumnA = T1.ColumnA AND T2.ColumnB <> 5
)
【讨论】:
【参考方案5】:另一种方式-
SELECT DISTINCT T1.ColumnA
FROM TableName T1
WHERE T1.ColumnA NOT IN
(
SELECT T2.ColumnA FROM TableName T2 WHERE T2.ColumnB = 5
)
【讨论】:
以上是关于根据同一行中的另一个值从行中选择某个值的主要内容,如果未能解决你的问题,请参考以下文章
当同一行中的另一个单元格在 Javascript 中具有值时,验证一个单元格是不是成为必需的