mysql - INSERT INTO ... SELECT * 中的列顺序很重要吗?

标签 mysql sql

假设我在 MySQL 数据库中有 2 个表:

表1

  • 身份证
  • 姓名
  • 类型

表2

  • 身份证
  • 类型
  • 姓名

我想使用此语法将一行从 Table1 导入到 Table2,而不是命名所有列:

INSERT INTO Table2 SELECT * FROM Table1 WHERE ID = 101

列的顺序不同这一事实是否重要?或者只要所有列都具有相同的名称,就可以吗?

最佳答案

这两个表中的每一个都有一个实际的列顺序,您可以通过检查信息架构表来查看。 但是,您不应该依赖它,因为它可能会在未来的某个时候发生变化。

因此,最佳做法是始终指定与 INSERT 相关的列,包括在 INSERT INTO ... SELECT 的情况下:

INSERT INTO Table2 (ID, Name, Type)
SELECT ID, Name, Type
FROM Table1
WHERE ID = 101;

无论每个表中的基础列顺序如何,上述查询将始终按您预期的方式运行。

关于mysql - INSERT INTO ... SELECT * 中的列顺序很重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689272/

相关文章:

mysql - 在 CodeIgniter Activerecord 中检索 where 子句

mysql - 用 10 000 个值填充 MySQL 数据库

php - fatal error : Call to undefined function sqlsrv_connect() in C:\xampp\htdocs

mysql - MySql 数据库中的序列化数据可在商业智能工具中使用

python - 周期性操作错误: (2006, 'MySQL server has gone away')

php - laravel 如何从另一个数据库加入一个数据库

java - Hibernate Criteria 查询 : getting a list of objects with a m. .n 子表没有特定属性的关系

java - Spring启动问题 "There was an unexpected error (type=Internal Server Error, status=500)."

sql - Oracle - 两个表中两行之间的差异或变化

sql - 指定要从 GROUP BY 子句返回的记录