sql server查询数据库下指定的表 通过查询表的某个指定的值改变表里的另外一个字段的值

szp520cjl1314 2017-11-02 02:47:30
假设数据库里有6个表,A,B,C,D,E,F。其中我只要A,C,F这三个表 这三个表都有相同的字段order,跟statu。现在我要字段order==3的 这三个表的所有数据 把这三个表的order==4的数据的字段statu的值改成4
...全文
328 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
吉普赛的歌 2017-11-02
--0. 定义表变量
DECLARE @t TABLE (
	rowNum INT IDENTITY(1,1) PRIMARY KEY,
	tableName NVARCHAR(100)
)
--1. 将所有包含 order 而且包含 statu 字段的表名插入到表变量
INSERT INTO @t(tableName)
SELECT t.name FROM sys.tables AS t WHERE EXISTS (
	SELECT * FROM sys.[columns] AS c 
	WHERE c.[object_id]=t.[object_id]
		AND c.name='order'	
)
AND EXISTS (
	SELECT * FROM sys.[columns] AS c 
	WHERE c.[object_id]=t.[object_id]
		AND c.name='statu'	
)
--2. 遍历表变量中的所有表,构造动态SQL,更新相关记录
DECLARE @i INT,@iMax INT,@sql NVARCHAR(MAX)
SELECT @i=1,@iMax=MAX(rowNum) FROM @t
WHILE @i<=@iMax
BEGIN
	SELECT @sql='update '+t.tableName+' set [statu]=4 where order=3' FROM @t t
	PRINT @sql
	EXEC (@sql)
	SET @i=@i+1
END
  • 打赏
  • 举报
回复
szp520cjl1314 2017-11-02
就是这个数据库下的所有表 但是有些表有order跟statu这两个字段 有些表是没有的(这两个字段有是一起有,没有是一起没有,一开始设计表的时候就设计好的) 我首先找到有order字段的表 然后通过字段order==3的这个条件 找到这些表下的所有数据 在改变这些表的数据的字段为statu==4
  • 打赏
  • 举报
回复
吉普赛的歌 2017-11-02
引用 5 楼 szp520cjl1314 的回复:
.......是那种一条语句的这种 因为实际情况中肯定是不止三个表
三个表还是四个表, 是根据什么来的?
  • 打赏
  • 举报
回复
szp520cjl1314 2017-11-02
.......是那种一条语句的这种 因为实际情况中肯定是不止三个表
  • 打赏
  • 举报
回复
听雨停了 2017-11-02

--把这三个表的order==4的数据的字段statu的值改成4
UPDATE A SET statu=4
WHERE order=4

UPDATE B SET statu=4
WHERE order=4

UPDATE C SET statu=4
WHERE order=4
  • 打赏
  • 举报
回复
听雨停了 2017-11-02
引用 1 楼 buzhunmeiyouni 的回复:
order==3 三个表出查询出来的数据全部放在一个新表里面,还是每个表显示每个表的
这三个表的字段都是一样的吗?如果是的话那放到一个表里是否要加个字段来区分是哪个表的数据啊
  • 打赏
  • 举报
回复
szp520cjl1314 2017-11-02
要把这三个表order==3的所有数据 查询出来之后 改变这些数据的statu字段的值为4
  • 打赏
  • 举报
回复
buzhunmeiyouni 2017-11-02
order==3 三个表出查询出来的数据全部放在一个新表里面,还是每个表显示每个表的
  • 打赏
  • 举报
回复
相关推荐
发帖
应用实例
加入

2.7w+

社区成员

MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
申请成为版主
帖子事件
创建了帖子
2017-11-02 02:47
社区公告
暂无公告