根据上条记录 而更新表内字段

maomaohao3 2009-04-22 08:04:08

有一个表是只有的:

sn ts1 ts2 ts3 ts4

1 你好 很好 不错 不错啊

2 他们 他们啊 他们是不 他们是不啊

3 看到 什么 不可以 不可以

4

5

现在的问题是在第4行,也就是sn为4的那行,当我输入‘ts1’ 为 '你好' 的时候 第4行的记录 会自动复制于 ts2 ts3 ts4 于第4行的字段

结果如下:

sn ts1 ts2 ts3 ts4

1 你好 很好 不错 不错啊

2 他们 他们啊 他们是不 他们是不啊

3 看到 什么 不可以 不可以

4 你好 很好 不错 不错啊

5
...全文
75 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
maomaohao3 2009-04-23
  • 打赏
  • 举报
回复
UPDATE A SET
ts1=B.ts1,
ts2=B.ts2,
ts3=B.ts3,
ts4=B.ts4
FROM @T AS A
CROSS JOIN @T AS B
WHERE A.sn=4
AND B.ts1='你好'


AND B.ts1='你好' 这个条件不是固定的啊


有的时候ts1会等于其他的呀 不知道你们有没有看懂我说的意思
htl258_Tony 2009-04-23
  • 打赏
  • 举报
回复
小梁不是已经帮你了吗?
maomaohao3 2009-04-23
  • 打赏
  • 举报
回复
啊啊 没有人帮忙嘛? 顶上去 不要沉了
maomaohao3 2009-04-23
  • 打赏
  • 举报
回复
顶上去 需求帮忙
maomaohao3 2009-04-22
  • 打赏
  • 举报
回复
ts1是唯一 是自己填上去 ,随便填什么,也就是说上面填写了多条记录 ,如果下面也要再填写一条记录 就根据判断ts1 与上面任何一条记录同,就后面的那些字段不用填写 更新下就直接写入数据中


[Quote=引用楼主 maomaohao3 的帖子:]

有一个表是只有的:

sn ts1 ts2 ts3 ts4

1 你好 很好 不错 不错啊

2 他们 他们啊 他们是不 他们是不啊

3 看到 什么 不可以 不可以

4

5

现在的问题是在第4行,也就是sn为4的那行,当我输入‘ts1’ 为 '你好 ' 的时候 第4行的记录 会自动复制于 ts2 ts3 ts4 于第4行的字段…
[/Quote]
maomaohao3 2009-04-22
  • 打赏
  • 举报
回复
恩 不错 我这里 还有个东西 你帮我看下

declare @output2 varchar(8000)
declare @output22 varchar(8000)
select @output2 = coalesce(@output2 + '/' , '') + b.bprocessid_name+'1' from Pro_WorkProject_Detail3_vi a inner join Pro_WorkProject_Detail7_vi b on a.sbillno=b.sbillno and a.wpartname=b.bpartid and a.irecno=b.iprecno where a.irecno=2 and a.sbillno='09040211'
select @output22 = coalesce(@output22 + '/' , '') + b.wtech_name from Pro_WorkProject_Detail3_vi a inner join Pro_WorkProject_Detail2_vi b on a.sbillno=b.sbillno and a.wpartname=b.wpartid and a.irecno=b.iprecno where a.irecno=2 and a.sbillno='09040211'
create table c(help varchar(100))
insert into c values( @output2 + '/' + @output22)
select * from c
drop table c

上面你看到 如果@output2为空的时候,整个记录就都为空了 但是我@output22是选择出来有值的 那就想体现出@output2的值啊

也就是说不管@output2是不是空的 都可选正常得出到两个加起来的值
ks_reny 2009-04-22
  • 打赏
  • 举报
回复
用触发器。
liangCK 2009-04-22
  • 打赏
  • 举报
回复
---------------------------------
-- Author: liangCK 小梁
---------------------------------

--> 生成测试数据: @T
DECLARE @T TABLE (sn INT,ts1 VARCHAR(4),ts2 VARCHAR(6),ts3 VARCHAR(8),ts4 VARCHAR(10))
INSERT INTO @T
SELECT 1,'你好','很好','不错','不错啊' UNION ALL
SELECT 2,'他们','他们啊','他们是不','他们是不啊' UNION ALL
SELECT 3,'看到','什么','不可以','不可以' UNION ALL
SELECT 4,null,null,null,null UNION ALL
SELECT 5,null,null,null,null

--SQL查询如下:

UPDATE A SET
ts1=B.ts1,
ts2=B.ts2,
ts3=B.ts3,
ts4=B.ts4
FROM @T AS A
CROSS JOIN @T AS B
WHERE A.sn=4
AND B.ts1='你好'

SELECT * FROM @T;

/*
sn ts1 ts2 ts3 ts4
----------- ---- ------ -------- ----------
1 你好 很好 不错 不错啊
2 他们 他们啊 他们是不 他们是不啊
3 看到 什么 不可以 不可以
4 你好 很好 不错 不错啊
5 NULL NULL NULL NULL

(5 行受影响)

*/
liangCK 2009-04-22
  • 打赏
  • 举报
回复
UPDATE A SET 
ts2=B.ts2,
ts3=B.ts3,
ts4=B.ts4
FROM tb AS A
CROSS JOIN tb AS B
WHERE A.sn=4
AND B.ts1='你好'
liangCK 2009-04-22
  • 打赏
  • 举报
回复
ts的值是唯一的吗?

34,591

社区成员

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

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