在表的末尾添加一个新列后,我想立即将该列的值设置为等于表中另一列的值,仅使用表中的ORDINAL_POSITION
后者INFORMATION_SCHEMA.COLUMNS
。这样,在将来不存在任何现有列的情况下,查询将不会被硬编码。
具体来说,我想将新列的值设置为等于列的值previous
(参考ORDINAL_POSITION
)。在 SQL 中,这意味着接近以下内容:
UPDATE DatabaseName.dbo.TableName
SET FSVAccessLvl = (
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'DatabaseName'
AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'TableName'
GROUP BY ORDINAL_POSITION, COLUMN_NAME
HAVING ORDINAL_POSITION = MAX(ORDINAL_POSITION) - 1
)
有没有办法做到这一点?对于包含n列的表,我基本上想说SET Col_n = Col_n-1
. 有没有办法做到这一点?欢迎任何帮助。