为了账号安全,请及时绑定邮箱和手机立即绑定

提问个奇怪的sql

提问个奇怪的sql

杨__羊羊 2018-12-07 07:56:24
话不多说直接上测试代码: create table persontest( name nvarchar(10), age int) insert into persontest(name, age)values('a',3),('a',3),('b',4),('b', 3) 以上sql跑完了之后你应该能得到大概这么一个表: name agea 3a 3b 4b 3 现在我要进行类似这么一个查找(该sql肯定是不能跑的, 我只是用它来表达我想要做的查询) select name, agefrom persontest group by namehaving all age = 3   我期待的结果是: (a,3), 或者能直接查出(a)也是可以接受的。   因为对于a来说, 所有的a的age都是3,因此a符合条件, 我要a了 b的话, 有一个4, 所以不全是3, 因此b不合格。b被踢掉了。   就是这么个需求。   由于聚合函数里我没找到类似于"all"这样的函数, 所以弄不清这个到底如何写。 有谁有办法吗?非常感谢。 圆豆不是问题。 补充:数据库是sql server
查看完整描述

8 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

select name from (
select name,age
from persontest
group by name,age) as n
group by name
having COUNT(1)=1

 

你是要找 name分组后,所有age都相同的么.?

查看完整回答
反对 回复 2019-01-07
?
千万里不及你

TA贡献1784条经验 获得超9个赞

你的意思是要找所有age=3且没有age<>3的name是吗?

查看完整回答
反对 回复 2019-01-07
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

虽然没读懂你的话, 但是我感觉你说的应该就是我的意思。 

比如全天下叫张三的人今年都3岁, 那就显示张三

而全天下叫李四的人, 有三岁的有四岁的, 不显示李四。 

全天下叫王五的人, 全都不是三岁的, 不显示王五。

查看完整回答
反对 回复 2019-01-07
?
皈依舞

TA贡献1851条经验 获得超3个赞

太难了。。

查看完整回答
反对 回复 2019-01-07
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

select  name , min(age) from persontest group by name   having min(age)=max(age)

查看完整回答
反对 回复 2019-01-07
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

select name ,age, COUNT(*) AS num

from persontest

group by name,age

having age= 2

查看完整回答
反对 回复 2019-01-07
  • 8 回答
  • 0 关注
  • 510 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信