我想问个问题 就是 出现这样的 格式
code name ax ay link
1001 dd 11 33 http://google.cn
1001 dd 22 33 kkkkk
1002 ss ff ss kjjljlj
1003 ww f2f dfs jkjljlkj
1003 ww jkjl jljljk jljljljl 我想写 一 SQL 语句,,查询 只有一条的数据 比如1001有 两条 ,,但我只想取其 1条。。 这样的 SQL 语句如何写呢???
请大家 能多帮帮忙,,在线等。。谢谢大家了。。
code name ax ay link
1001 dd 11 33 http://google.cn
1001 dd 22 33 kkkkk
1002 ss ff ss kjjljlj
1003 ww f2f dfs jkjljlkj
1003 ww jkjl jljljk jljljljl 我想写 一 SQL 语句,,查询 只有一条的数据 比如1001有 两条 ,,但我只想取其 1条。。 这样的 SQL 语句如何写呢???
请大家 能多帮帮忙,,在线等。。谢谢大家了。。
SELECT ROW_NUMBER() OVER(PARTITION BY CODE ORDER BY CODE) 'ID',* FROM TB
) T WHERE ID=1
主要是要group by
if object_id('[TB]') is not null drop table [TB]
create table [TB]([code] int,[name] varchar(2),[ax] varchar(4),[ay] varchar(6),[link] varchar(16))
insert [TB]
select 1001,'dd','11','33','http://google.cn' union all
select 1001,'dd','22','33','kkkkk' union all
select 1002,'ss','ff','ss','kjjljlj' union all
select 1003,'ww','f2f','dfs','jkjljlkj' union all
select 1003,'ww','jkjl','jljljk','jljljljl'select * from [TB]
SELECT code,MAX(NAME),MAX(ax),MAX(ay),MAX(link)
FROM tb
GROUP BY code/*
code
----------- ---- ---- ------ ----------------
1001 dd 22 33 kkkkk
1002 ss ff ss kjjljlj
1003 ww jkjl jljljk jljljljl(3 行受影响)
*/???
select k.*
from tb a cross apply
(select top 1 * from tb where a.code=code order by GETDATE()) k当然05可以使用临时表
apply的写法效率没2L的好~
from tb a cross apply
(select top 1 * from tb where a.code=code order by ax) k
/*
code name ax ay link
----------- ---- ---- ------ ----------------
1001 dd 11 33 http://google.cn
1002 ss ff ss kjjljlj
1003 ww f2f dfs jkjljlkj*/
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB(COL1 INT,COL2 INT)
INSERT INTO TB
SELECT 1,1 UNION ALL
SELECT 1,2 UNION ALL
SELECT 3,4 UNION ALL
SELECT 3,2 UNION ALL
SELECT 4,3 UNION ALL
SELECT 5,NULL SELECT COL1,COL2 FROM (
SELECT
'ID'=ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL1)
,* FROM TB
) T WHERE ID=1
/*
COL1 COL2
----------- -----------
1 1
3 4
4 3
5 NULL
*/