gpt4 book ai didi

sql - SQL:如何将数据插入具有列名称的表中

转载 作者:行者123 更新时间:2023-12-04 21:51:22 25 4
gpt4 key购买 nike

将数据插入SQL Server表时,是否可以指定要将数据插入到哪一列?

对于一张 table

我知道您可以使用以下语法:

INSERT INTO MyTable (Name, col4_on, col8_on, col9_on)
VALUES ('myName', 0, 1, 0)

但是,当您有很多列时,尤其是当它们具有二进制数据时,上述语法变得笨拙。很难将哪个1和0与哪个列匹配。我希望有一个类似于语法的命名参数(类似于C#的语法),它看起来像下面的样子:
INSERT INTO MyTable 
VALUES (Name: 'myName', col4_on: 0, col8_on: 1, col9_on: 0)

谢谢

最佳答案

您必须指定列名称。但是,有一个异常(exception)。如果以与表中相同的顺序插入与目标表完全相同的列数,请使用以下语法:

INSERT INTO MyTable
VALUES ('val1A', 'val4A', 'val8A')

请注意,这是执行 INSERT的脆弱方法,因为如果该表发生更改,或者如果列在不同系统上的排序不同,则 INSERT可能会失败甚至更糟-可能会将错误的数据放入每个列中。

我发现,当我对许多列进行 INSERT编码时,如果可以对它们进行分组,我会发现这些查询更易于阅读。如果列名很长,我可以将它们放在单独的行上,如下所示:
INSERT INTO MyTable
(
MyTable_VeryLongName_Col1,
MyTable_VeryLongName_Col4,
MyTable_VeryLongName_Col8,
-- etc.
)
SELECT
Very_Long_Value_1,
Very_Long_Value_4,
Very_Long_Value_8,
-- etc.

或者,您可以将一行中的2列分组,或者在每5行上放置空格,或者在每10行上注释,等等。

如果在插入很多行时发现列名繁琐,请尝试将数据链接在一起:
INSERT INTO MyTable (col1, col4, col8)
VALUES ('val1A', 'val4A', 'val8A'),
('val1B', 'val4B', 'val8B'),
-- etc.

或者一起对它们进行 UNION编码:
INSERT INTO MyTable (col1, col4, col8)
SELECT 'val1A', 'val4A', 'val8A'
UNION ALL 'val1B', 'val4B', 'val8B'
UNION ALL ... -- etc.

或者,从另一个表中选择它们:
INSERT INTO MyTable (col1, col4, col8)
SELECT val1, va4, val8
FROM MyOtherTable
WHERE -- some condition is met

关于sql - SQL:如何将数据插入具有列名称的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20621792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com