sách gpt4 ai đã đi

sql - Thực hiện một lệnh SQL trên nhiều bảng (không cần viết lại lệnh SQL)

In lại 作者:行者123 更新时间:2023-12-04 14:34:36 28 4
mua khóa gpt4 Nike

我有一系列 SQL 命令,我想在大约 40 个不同的表上运行。必须有一种方法可以在不编写 40 条不同命令的情况下执行此操作...

我在 SQL Server 中运行它。所有表都有不同的名称,我要操作的列(下面的 VariableColumn)的名称也不同。我确实有表和列的名称列表。

此代码的最终效果:我将 VariableColumn 作为外键连接到 DOCS 表中的 DOC_ID 列。有些表的 VariableColumn 中的值与 DOC_ID 列中的任何值都不对应(过时的数据),因此我首先删除任何此类行。

Đặt hàng:

-- Delete rows in VariableTable that have invalid VariableColumn values
DELETE FROM VariableTable
FROM VariableTable v
LEFT OUTER JOIN DOCS d
ON d.DOC_ID = v.VariableColumn
WHERE d.DOC_ID IS NULL

-- Add foreign key to VariableTable table
ALTER TABLE VariableTable
ADD CONSTRAINT FK_DOCS_VariableTable_VariableColumn FOREIGN KEY (VariableColumn)
REFERENCES DOCS(DOC_ID);

1 Câu trả lời

既然你有表名和列名的列表,你就可以将它们放在一个表中。您可以在游标中使用它们来构建和执行命令。

Ví dụ:

DECLARE @Target TABLE (tbl SYSNAME,col SYSNAME)
INSERT @Target VALUES ('tbl_1','col_a'),('tbl_2','col_b')

DECLARE @tbl SYSNAME
DECLARE @col SYSNAME
DECLARE @sql NVARCHAR(MAX)

DECLARE work CURSOR FOR
SELECT tbl,col
FROM @Target

OPEN work
FETCH NEXT FROM work INTO @tbl,@col

WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'PRINT ''Do something to table: ' + @tbl + ' column: '+ @col + ''''
EXECUTE sp_executesql @sql
FETCH NEXT FROM work INTO @tbl,@col
END

CLOSE work
DEALLOCATE work

关于sql - 对多个表执行一个 SQL 命令(无需重写 SQL 命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393468/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com