所有表的结构都具有相同的列名。
这是一段代码:
UPDATE Table1
INNER JOIN TableX ON Table1.Column1= TableX.Column1
SET Table1.Column2 = TableX.Column2
但我想在所有表上运行此代码:Table2,Table3,Table4 .... Table30
答案 0 :(得分:0)
如果我理解得很好,那对你有用......
SELECT AllTables.*
FROM AllTables
WHERE AllTables.ColumnName_X = AllTables.ColumnName_Y
答案 1 :(得分:0)
或许考虑UNION ALL
SELECT ColumnName_X
FROM table1
WHERE .....
UNION ALL
SELECT ColumnName_X
FROM table2
WHERE .....
根据我的评论,您的要求不明确。
答案 2 :(得分:0)
这里的大多数答案都假定SQL服务器 - 这不是标签,不是此问题的一部分,也无法使用。
如果你的表被命名为table1到table30,那么这应该有效:
Dim strSQL As String
Dim i As Integer
Dim strTable As String
For i = 1 To 10
strTable = "Table" & i
strSQL = "update " & strTable & _
" inner join TableX on " & strTable & ".column1 = TableX.Column1" & _
" SET " & strTable & ".Column2 = TaxbleX.Column2"
Debug.Print strSQL
CurrentDb.Execute strSQL
Next i
答案 3 :(得分:-1)
使用以下查询获取表及其包含特定列(ColumnX)
的表的列表SELECT
sys.columns.name AS ColumnName,
sys.tables.name AS TableName,
schema_name (sys.tables.schema_Id) as schemaName
FROM
sys.columns
JOIN sys.tables ON
sys.columns.object_id = sys.tables.object_id
WHERE
sys.columns.name = 'ColumnName'
--and schema_name (sys.tables.schema_Id) = 'schemaName'
输出:(如果columnX是ID)
ColumnName TableName schemaName
ID MusicApp dbo
id employ dbo
获取ID的值,您可以在#temptable中存储上面的查询输出并使用循环来动态获取
declare @tablename varchar(max)= ''
declare @count int = 1
declare @tablecount int= (select count(*) from #temptable)
while(@count <= @tablecount)
begin
set @tablename = (select tablename from #temptable where seqid = @count)
exec ( 'select id from '+@tablename+' ')
set @count = @count + 1
end
希望这可以帮助你:)