12
回答
这个sql怎么实现
开发十年,就只剩下这套Java开发体系了   

 

数据库表如下图,取出不同性别的最大年龄,并附加最大年龄的性别和姓名,这个功能怎么实现啊?

<无标签>
举报
共有12个答案 最后回答: 2个月前

select name,sex from 某表,(select  max(age) as 年龄最大的男性 from 某表 where sex='男') t1,(select  max(age) as 年龄最大的女性 from 某表 where sex='女' ) t2 where age=t1.年龄最大的男性 or age=t2.年龄最大的女性

--- 共有 2 条评论 ---
大洋的彼岸 回复 @踏破铁鞋无觅处 : 子查询的别名 2个月前 回复
踏破铁鞋无觅处兄弟 你这个不对啊,t1和t2是给列起的别名啊, 因为在同一列,这个男女最大年龄不能同时查出来,我应该没理解搓你的想法吧 2个月前 回复

select name,sex,max(age) form user where sex='男'

union all

select name,sex,max(age) form user where sex='女'

--- 共有 4 条评论 ---
踏破铁鞋无觅处 回复 @MZHS : 我是用的本地“mysql5.7“好像不支持这种查询方式,服务器上用的5.5版本大倒是可以。 而且我从别的地方看到,5.7之后使用group by,group by 之外的属性不能查询,除非有聚合函数 2个月前 回复
MZHS 回复 @踏破铁鞋无觅处 : 也可以使用group by age desc limit 1然后union all 2个月前 回复
MZHS 回复 @踏破铁鞋无觅处 : 两句子查询每句后面添加个group by sex就可以 了 2个月前 回复
踏破铁鞋无觅处不对啊 兄弟 select name,sex,max(age) form user where sex='男' 光这一句就不能执行 2个月前 回复

select `name` ,sex,age from `user` WHERE age=(select MAX(age) from `user` where  sex='男') 
UNION ALL
select `name` ,sex,age from `user` WHERE age=(select MAX(age) from `user` where  sex='女')
 

--- 共有 1 条评论 ---
踏破铁鞋无觅处 select `name` ,sex,age from `user` WHERE age=(select MAX(age) from `user` where sex='男') and sex='男' UNION ALL ........ and sex='女 2个月前 回复

上面的好像水平一般。。。

SELECT N'张三' AS NAME, N'男' AS sex, 23 AS age
INTO #temp
UNION ALL
SELECT N'李四', N'男', 22
UNION ALL
SELECT N'王五', N'女', 22
UNION ALL
SELECT N'田六', N'女', 18

SELECT a.*
FROM #temp a, (SELECT sex, max(age) AS age FROM #temp b GROUP BY sex ) b
WHERE a.sex = b.sex AND a.age = b.age

DROP TABLE #temp

 

--- 共有 1 条评论 ---
踏破铁鞋无觅处你这个是存储过程吗 现在我还看不太懂 改天好好看看 2个月前 回复

引用来自“魔力猫”的评论

SELECT distinct sex, max(age) over (partition by sex), max(name) over (partition by sex)
 FROM world.x1;

你的结果错了。是 min(name) , 但是你这种写法,我还真是第一次看。666 

--- 共有 1 条评论 ---
魔力猫这是窗口函数。 2个月前 回复

引用来自“暴猿”的评论

select max(age),sex,name from test group by sex;

一看就知道跑不了。。。

--- 共有 1 条评论 ---
踏破铁鞋无觅处这个在mysql5.7版本之前是可以查出来结果的 但是5.7之后就不可以了 我就用的5.7之后的 2个月前 回复
顶部