我正在用 Go 编写一个程序,它大量使用 MySQL。为了可读性,是否可以在 INSERT 语句中的每个列名之后包含列的值?喜欢:INSERT INTO `table` (`column1` = 'value1', `column2` = 'value2'...);代替INSERT INTO `table` (`column`, `column2`,...) VALUES('value1', 'value2'...);以便更容易查看哪个值与哪个列相关联,考虑到 SQL 字符串通常会变得相当长
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
不,您不能使用您建议的语法(尽管它会很好)。
一种方法是排列列名和值:
INSERT INTO `table`
(`column`, `column2`,...)
VALUES
('value1', 'value2'...);
更新响应您的评论“语句包含来自字符串外部的变量”:如果您参数化您的 SQL 语句,那么将列名与变量匹配很容易检查参数是否为其各自的列命名:@ColumnName。
这实际上是我在 TSQL 脚本中的做法:
INSERT INTO `table`
(
`column`,
`column2`,
...
)
VALUES
(
'value1',
'value2',
...
);
(将逗号放在行首也很常见)
但老实说,一旦你得到足够多的列,很容易混淆列的位置。如果它们具有相同的类型(和相似的值范围),您可能不会立即注意到......
隔江千里
TA贡献1906条经验 获得超10个赞
虽然这个问题有点老,但我会把它放在这里供未来的研究人员使用。
我建议使用 SET 语法而不是丑陋的 VALUES 列表语法。
INSERT INTO table
SET
column1 = 'value1',
column2 = 'value2';
恕我直言,这是 MySQL 中最干净的方式。
- 3 回答
- 0 关注
- 194 浏览
添加回答
举报
0/150
提交
取消