sql查询获取具有多个条件的数据
Posted
技术标签:
【中文标题】sql查询获取具有多个条件的数据【英文标题】:sql query to get data with multiple condition 【发布时间】:2019-03-06 12:08:55 【问题描述】:具有三列的表 ta
A | B | C
1 |11| 0
1 |12| 0
1 |13| 0
2 |33| 5
2 |34| 10
2 |35| 78
5 |45| 0
5 |49| 0
5 |51| 0
8 |10| 0
8 |14| -1
8 |34| -2
我正在寻找 SQL 查询来获取不同的 A 值,该值对于所有 B 具有 C 值为零。 (即输出为 1 & 5)
【问题讨论】:
标记您实际使用的数据库引擎。 mysql和sql server使用的方言不同。 【参考方案1】:您可以使用group by
和having
:
select a
from t
group by a
having min(c) = 0 and max(c) = 0;
【讨论】:
【参考方案2】:试试这个:
select distinct A from [dbo].[table] where A not in (
select A from [dbo].[table] where C <> 0)
【讨论】:
【参考方案3】:您可以检查 C 的平均值,如果它为 0,则 B 的所有 C 值都为零,
SELECT A
FROM table
GROUP BY A
HAVING SUM(ABS(C))=0
【讨论】:
mod() 是做什么的?因为它不是 tsql 函数。 是的 abs() 一定没问题。 虽然SUM(ABS(C)) = 0
更好。
是的,确实会改变【参考方案4】:
你可以这样做:
select t.*
from table t
where t.c = 0 and
not exists (select 1 from #tm t1 where t1.a = t.a and t1.c < 0)
【讨论】:
【参考方案5】:与NOT EXISTS
:
select distinct a from tablename t
where not exists (
select 1 from tablename
where
a = t.a
and
c <> 0
)
【讨论】:
【参考方案6】:试试这个:
Select
A
from #tmp
group by A
Having
count(*)=count(case when c=0 then 0 else null end)
【讨论】:
【参考方案7】:对于 SQL Server:
SELECT A FROM ta
EXCEPT
SELECT A FROM ta WHERE C <> 0
【讨论】:
以上是关于sql查询获取具有多个条件的数据的主要内容,如果未能解决你的问题,请参考以下文章