怎样限定一个表中的前几条记录或后几条记录?

ivy_live521 2002-08-21 01:46:15
我想修改一个表中的前几条记录
我是这么写的,不对,应该是怎样?
UPDATE YMJ.TXMD_YSBZ01
SET MDBH=RTRIM(MDBH)+'01'
WHERE (SELECT TOP 5 WITH TIES mdbh, kc, fp, ad
FROM ymj.txmd_ysbz01
ORDER BY mdbh DESC)
谢谢指教!
...全文
46 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
j9988 2002-08-21
  • 打赏
  • 举报
回复
语句本身是行的,但TOP 35内不全是或全不是:
SUBSTRING(mdbh, 1, 3) = '141'
------------------------------------------------
SELECT *
FROM ymj.txmd_ysbz01
WHERE (SUBSTRING(mdbh, 1, 3) = '141') AND MDBH IN
(SELECT TOP 35 WITH TIES MDBH
FROM YMJ.TXMD_YSBZ01 ORDER BY MDBH DESC)
--------------------------------------------------------
你若想找出前35个SUBSTRING(mdbh, 1, 3) = '141'的,应改为:
SELECT *
FROM ymj.txmd_ysbz01
WHERE MDBH IN
(SELECT TOP 35 WITH TIES MDBH
FROM YMJ.TXMD_YSBZ01 where SUBSTRING(mdbh, 1, 3) = '141'
ORDER BY MDBH DESC)

supsuccess 2002-08-21
  • 打赏
  • 举报
回复
语法没错,
你指什么不行?
ivy_live521 2002-08-21
  • 打赏
  • 举报
回复
两位说的很对,问题解决!
可是我想这样查,为什么不行?:(
SELECT *
FROM ymj.txmd_ysbz01
WHERE (SUBSTRING(mdbh, 1, 3) = '141') AND MDBH IN
(SELECT TOP 35 WITH TIES MDBH
FROM YMJ.TXMD_YSBZ01 ORDER BY MDBH DESC)

gzhughie 2002-08-21
  • 打赏
  • 举报
回复
如果你的mdbh是唯一的 你可以这样写
UPDATE YMJ.TXMD_YSBZ01
SET MDBH=RTRIM(MDBH)+'01'
WHERE MDBH IN (SELECT TOP 5 mdbh
FROM ymj.txmd_ysbz01
ORDER BY mdbh DESC)
supsuccess 2002-08-21
  • 打赏
  • 举报
回复
UPDATE YMJ.TXMD_YSBZ01
SET MDBH=RTRIM(MDBH)+'01' from ymj.txmd_ysbz01 t1,
(SELECT TOP 5 WITH TIES mdbh, kc, fp, ad
FROM ymj.txmd_ysbz01
ORDER BY mdbh DESC)t2
where ...(如:t1.mdbh=t2.mdbh and ...)

34,575

社区成员

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

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