我有多个具有匹配列名的表,并且想要创建一个影响 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。
只需过滤 TABLE_NAME 列即可:
SELECT 'UPDATE ' + TABLE_NAME + ' SET column_1= ''Value'' where column_id=''value'''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'column_1'
AND TABLE_NAME IN ('table1', 'table2')
关于mysql - UPDATE指定多个具有相同列名的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41579886/