急求查询语句 group by有关!

krzg2008 2008-09-27 06:24:38
表aa
id m_id m
1 01 a
2 01 b
3 02 c
4 01 d
5 02 e
6 02 f
我想要的结果是:按照m_id分组后的第一条数据,即:
1 01 a
3 02 c
分组后的第二条数据呢?
2 01 b
5 02 e
先行谢过!
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wer123q 2008-09-27
  • 打赏
  • 举报
回复
 CREATE TABLE #T (id INT,m_id VARCHAR(2),m VARCHAR(1))
INSERT INTO #T
SELECT '1','01','a' UNION ALL
SELECT '2','01','b' UNION ALL
SELECT '3','02','c' UNION ALL
SELECT '4','01','d' UNION ALL
SELECT '5','02','e' UNION ALL
SELECT '6','02','f'


select * from #t where m in
(select min(m) from #t group by m_id)
------------------------------------------
select * from #t where m in
(select min(m) from #t where m not in (select min(m) from #t group by m_id ) group by m_id )

-狙击手- 2008-09-27
  • 打赏
  • 举报
回复
IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
CREATE TABLE #T (id INT,m_id VARCHAR(2),m VARCHAR(1))
INSERT INTO #T
SELECT '1','01','a' UNION ALL
SELECT '2','01','b' UNION ALL
SELECT '3','02','c' UNION ALL
SELECT '4','01','d' UNION ALL
SELECT '5','02','e' UNION ALL
SELECT '6','02','f'

select
id,
m_id,
m
from
(
select
*,
rowid = row_number() over(partition by m_id order by id)
from #t) a
where rowid = 1
/*
id m_id m
----------- ---- ----
1 01 a
3 02 c

(2 行受影响)
*/
select
id,
m_id,
m
from
(
select
*,
rowid = row_number() over(partition by m_id order by id)
from #t) a
where rowid = 2
/*

id m_id m
----------- ---- ----
2 01 b
5 02 e

(2 行受影响)
*/
ws_hgo 2008-09-27
  • 打赏
  • 举报
回复
kankan
xabcxyz 2008-09-27
  • 打赏
  • 举报
回复
select * from t where id in (select Min(id) from t where id not in (select Min(id) from t group by m_id) group by m_id)
xabcxyz 2008-09-27
  • 打赏
  • 举报
回复
select * from t where id in (select Min(id) from t group by m_id)

liangCK 2008-09-27
  • 打赏
  • 举报
回复
--> liangCK小梁 于2008-09-27
--> 生成测试数据: #T
IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
CREATE TABLE #T (id INT,m_id VARCHAR(2),m VARCHAR(1))
INSERT INTO #T
SELECT '1','01','a' UNION ALL
SELECT '2','01','b' UNION ALL
SELECT '3','02','c' UNION ALL
SELECT '4','01','d' UNION ALL
SELECT '5','02','e' UNION ALL
SELECT '6','02','f'

--SQL查询如下:

SELECT *
FROM #T AS t
WHERE 1=( --更改这个数字
SELECT COUNT(*)
FROM #T
WHERE m_id=t.m_id
AND id<=t.id
)

SELECT *
FROM #T AS t
WHERE 2=( --更改这个数字
SELECT COUNT(*)
FROM #T
WHERE m_id=t.m_id
AND id<=t.id
)

/*
id m_id m
----------- ---- ----
1 01 a
3 02 c

(2 行受影响)

id m_id m
----------- ---- ----
2 01 b
5 02 e

(2 行受影响)

*/

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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