SQLServer 查找单条记录

meceky 2011-10-24 02:29:00

<table>
<tr><td>Id</td><td>Uid</td><td>Name</td></tr>
<tr><td>1</td><td>1</td><td>name1</td></tr>
<tr><td>2</td><td>1</td><td>name2</td></tr>
<tr><td>3</td><td>1</td><td>name1</td></tr>
<tr><td>2</td><td>1</td><td>name2</td></tr>
</table>

Id为主键,如何从这个表根据Uid选出记录,且每个UId只选出一条记录。
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
meceky 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]

不过看你的数据 貌似ID也重复了 不是主键么??怎么会重复?
[/Quote]
呵呵,那个是我写错了!
中国风 2011-10-24
  • 打赏
  • 举报
回复
寫一個給樓主參照一下
DECLARE @x XML
SET @x='<table> <tr><td>Id</td><td>Uid</td><td>Name</td></tr> <tr><td>1</td><td>1</td><td>name1</td></tr> <tr><td>2</td><td>1</td><td>name2</td></tr> <tr><td>3</td><td>1</td><td>name1</td></tr> <tr><td>2</td><td>1</td><td>name2</td></tr> </table> '

;WITH a
AS
(
SELECT C.v.value('.','nvarchar(100)') AS VALUE,row=ROW_NUMBER()OVER(ORDER BY (SELECT 1))
FROM @x.nodes('/table/tr/td')C(v)
)
SELECT VALUE AS 'UID'
FROM a AS b
WHERE exists(SELECT 1 FROM a WHERE b.row%3=row AND Value='UID' AND VALUE<>b.Value)
/*
1
1
1
1
*/
--小F-- 2011-10-24
  • 打赏
  • 举报
回复
不过看你的数据 貌似ID也重复了 不是主键么??怎么会重复?
--小F-- 2011-10-24
  • 打赏
  • 举报
回复
select * from [table] t where id=(select max(id) from [table] where uid=t.uid)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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