sql好象无法实现的先排序后分组,大手进来看看希望能得到解决

llainn 2006-09-15 05:58:53
有这样一个数据库表
t1 t2 t3……n
--------------------------
aaa 100 剩余字段
bbb 80 剩余字段
aaa 90 剩余字段
ccc 70 剩余字段
ccc 500 剩余字段
ccc 20 剩余字段
bbb 30 剩余字段
bbb 40 剩余字段
bbb 50 剩余字段

我希望的最后结果就是:
t1 t2 t3……n
------------------
ccc 500 剩余字段
aaa 100 剩余字段
bbb 80 剩余字段

也就是以t1分组,取每组中t2最大的记录

帮我看看被怎么写
搞不定了
先谢谢了
...全文
344 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2006-09-16
  • 打赏
  • 举报
回复
llainn(知易行难—www.dotnetcn.net) ( ) 信誉:96 Blog 2006-9-15 18:30:23 得分: 0



我就一个表,看两位写的SQL语句,咋么整出两表名来呢?



------------------------
table T1

(SELECT t1, MAX(t2) AS t2
FROM T1
GROUP BY t1) T2


T1是本身的表的別名,
T2是(SELECT t1, MAX(t2) AS t2
FROM T1
GROUP BY t1)
這個子查詢返回的結果集的別名
llainn 2006-09-16
  • 打赏
  • 举报
回复
救命啊
llainn 2006-09-16
  • 打赏
  • 举报
回复
贴子回复次数大于跟给分次数

这是什么意思?
llainn 2006-09-16
  • 打赏
  • 举报
回复
二楼的做法
SELECT a.*
FROM (select * from admin inner join admin_list on admin.id = admin_list.username_id) as a
INNER JOIN
(SELECT a.admin.id, MAX(a.admin_list.id) AS admin_list_id
FROM (select * from admin inner join admin_list on admin.id = admin_list.username_id) as a
GROUP BY admin.id) as b on a.admin.id = b.admin.id and a.admin_list.id = b.admin_list_id

=============================================
一楼的做法
select a.*
from (select * from admin inner join admin_list on admin.id = admin_list.username_id) as a,
(select a.admin.id,max(a.admin_list.id) as admin_list_id
FROM (select * from admin inner join admin_list on admin.id = admin_list.username_id) as a
group by a.admin.id) as b where a.admin.id = b.admin.id and a.admin_list.id = b.admin_list_id

=======================
都可以成功

感谢paoluo(一天到晚游泳的鱼) 的详解

最后问一句:

inner jion

select * from T1,T2

有什么不同?
llainn 2006-09-15
  • 打赏
  • 举报
回复
我就一个表,看两位写的SQL语句,咋么整出两表名来呢?
llainn 2006-09-15
  • 打赏
  • 举报
回复
两位大哥,你们太猛了

我看不懂,哪位好心人,留下QQ,一起讨论,我郁闷死了
winner2050 2006-09-15
  • 打赏
  • 举报
回复
都对
kbxj406 2006-09-15
  • 打赏
  • 举报
回复
SELECT table.*
FROM table T1 INNER JOIN
(SELECT t1, MAX(t2) AS t2
FROM T1
GROUP BY t1) T2 ON T1.t1 = T2.t1 AND T1.t2 = T2.t2

试过了,可以的
flyzq 2006-09-15
  • 打赏
  • 举报
回复
select a.* from table a,(select t1,max(t2) as t2 from table group by t1) b where a.t1=b.t1 and a.t2=b.t2

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧