如何更新如下的表?

Generics 2007-05-17 03:29:08
我想逐项更新一个表的某栏, 每一项更新的条件都跟前一项有关, 这样的情形怎么办? 

譬如这么两张表:
表A
ID SerialNo Title
1 111     "Silly 1"
2 222 "Silly 1"
3 333 "Silly 1"
4 125 "Silly 2"
...

表B
Item_ID Title SerialNo
1 "Silly 1" NULL
2 "Silly 2" NULL
3 "Silly 1" NULL

我现在要更新表B中的SerialNo, 使他匹配Title, 但是同样Title的不能重复。
譬如 Item_ID=1时, SerialNo为111, 那么Item_ID=3时, SerialNo绝对不能是以前出现过的, 如果表A中没有那么多序列号, 则后面的项仍然留空。
...全文
303 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzxhm 2007-10-06
  • 打赏
  • 举报
回复
好象一次性不能更新的!
要分次更新,取决于记录的重复度。
wzxhm 2007-10-06
  • 打赏
  • 举报
回复
我有算法,下贴提供。
你是从事什么工作的呢?好象你老在出题考大家呀!
Generics 2007-05-20
  • 打赏
  • 举报
回复
谢谢楼上的诸位, 虽然并不是我想要的. 实际上用query可能并不能满足我的要求, 所以最后我还是自己写了一段C#程序, 才能达到要求.
ojuju10 2007-05-17
  • 打赏
  • 举报
回复
楼上的不对吧!
jyxhz 2007-05-17
  • 打赏
  • 举报
回复
上面写错了

UPDATE TB SET Serial_no =TA.Serial_no from TA where TB.ItemID=TA.ID and TB.Title=TA.Title
jyxhz 2007-05-17
  • 打赏
  • 举报
回复
UPDATE TB SET Serial_ID =TA.Serial_ID from TA where TB.ItemID=TA.ID and TB.Title=TA.Title
ojuju10 2007-05-17
  • 打赏
  • 举报
回复
帮忙顶!
Generics 2007-05-17
  • 打赏
  • 举报
回复
我晕! 怎么没人愿意指点一下?
Generics 2007-05-17
  • 打赏
  • 举报
回复
这是个简单例子:

create database DummyTest

USE DummyTest
Create Table TA
( ID INT Identity(1,1) Primary Key,
Serial_ID INT NOt NULL,
Title Varchar(30) NOt NULL,
)

Create Table TB
(
Item_No INT Identity(1,1) Primary Key,
Title Varchar(30) NOT NULL,
Serial_ID INT NULL
)

Insert INTO TA(Serial_ID, Title)
SELECT 111, 'Silly 1'
UNION ALL
SELECT 222, 'Silly 1'
UNION ALL
SELECT 333, 'Silly 1'
UNION ALL
SELECT 234, 'Silly 2'

Insert INTO TB(Title)
SELECT 'Silly 1'
UNION ALL
SELECT 'Silly 2'
UNION ALL
SELECT 'Silly 1'
UNION ALL
SELECT 'Silly 1'
UNION ALL
SELECT 'Silly 1'

select * from TA
select * from TB


----我试图用下面的查询语句, 但没有用。


UPDATE TB
SET Serial_ID =
(
SELECT TOP 1 Serial_ID
FROM TA
WHERE TA.Title = TB.Title
AND TA.Serial_ID not in
(
SELECT Serial_ID
FROM TB as tb2
WHERE tb2.Item_No < TB.Item_No
)
)
qys2000 2007-05-17
  • 打赏
  • 举报
回复
UPDATE TB SET Serial_ID =TA.Serial_ID from TA where TB.Item_no=TA.ID and TB.Title=TA.Title

34,587

社区成员

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

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