【发布时间】:2017-01-10 22:53:27
【问题描述】:
我有多个具有匹配列名的表,并希望创建一个影响 4 个特定表中的 1 列的更新语句,如下所示:
UPDATE table1, table2, table3, table4
SET table1.column_1 = 'value', table2.column_1 = 'value', table3.column_1 = 'value', table4.column_1 = 'value'
WHERE table1.column_id = 'value' OR table2.column_id = 'value' OR table3.column_id = 'value' OR table4.column_id = 'value'
这是行不通的,我在谷歌上搜索了好几个小时才找到答案,我发现了这个https://stackoverflow.com/a/19797529/1824324:
Select 'UPDATE ' + TABLE_NAME + ' SET CreatedDateTime = ''<<New Value>>'' '
From INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'CreatedDateTime'
稍作调整:
SELECT 'UPDATE ' + TABLE_NAME + ' SET column_1= ''Value'' where column_id=''value'''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'column_1'
现在我的问题是我不希望更新具有该特定列的每个表,仅从 table1、table2、table3 和 table4 更新。如何剪切“FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'column_1'”并替换为 4 个表?
【问题讨论】:
-
它是什么... mysql 或 sql-server?请编辑标签,只留下相关的标签。
-
这是 SQL Server 还是 Mysql 特定的?
-
对不起,它的mysql
-
为什么会有多个表的列名匹配? :-(
-
@Strawberry - 除了 user_id 和其他一些东西之外,这 4 个表有不同的列