当前位置: 首页 > 面试题库 >

INSERT INTO…SELECT为所有MySQL列

松茂实
2023-03-14
问题内容

我正在尝试从以下位置移出旧数据:

this_table >> this_table_archive

复制所有列。我已经尝试过了,但是没有用:

INSERT INTO this_table_archive (*) VALUES (SELECT * FROM this_table WHERE entry_date < '2011-01-01 00:00:00');

注意:这些表是相同的,并已id设置为主键。


问题答案:

手册中描述了正确的语法。尝试这个:

INSERT INTO this_table_archive (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM this_table
WHERE entry_date < '2011-01-01 00:00:00';

如果id列是一个自动递增的列,并且您在两个表中都已经有一些数据,那么在某些情况下,您可能希望从列列表中省略该id并生成新的id,以避免插入原来的ID表。如果您的目标表为空,那么这将不是问题。



 类似资料:
  • 问题内容: 尝试在运行时向我的Web应用程序中的所有MySQL Select查询添加注释。 例如,代码中的原始查询如下所示: 所有这些都需要 在运行时 修改为: 该应用程序在Hibernate 4.2.1上运行。我能想到的唯一解决方案是扩展并在中添加。 对于为实现此目的而修改的方法有些困惑。希望任何朝着正确方向的指针。 可以重写in方法来做到这一点吗? 编辑1:自定义MySQL方言中的transf

  • 问题内容: 我有以下2个表t1,t2 我在跑步 结果: 在运行脚本时: 结果: select 应该返回所有列,所以,为什么当我使用select 时却没有得到2行? 注意:我正在使用Mysql 问题答案: 正如文档所说: 自然连接和使用USING的连接(包括外部连接变体)将根据SQL:2003标准进行处理: NATURAL连接的冗余列不会出现。考虑以下这组语句: 列j在USING子句中命名,并且在输

  • 问题内容: 我在尝试为我的应用程序实现一些计数器时遇到了这种奇怪的行为。基本上,我做了一个这样的计数器表: 然后,我也想计算一些特定类型的消息,因此在Go应用程序中,我更改了表以添加以前没有的列。 我的应用程序正在增长,并且我开始有30列以上(不应超过50列),并且当我想检索所有这些计数器时,结果中缺少一些列。 这给我返回了30列超过34列的信息。虽然,当我在CQLSH上执行请求时: 我得到适当的

  • 问题内容: 我有此查询在MySQL中正常工作。这里有更多背景信息。 我尝试在PostgreSQL中运行它,但此错误消息失败。 PGError:错误:列“ c.name”必须出现在GROUP BY子句中或在聚合函数中使用 我不确定这是什么意思,所以我尝试在group by子句中将“ c.id”更改为“ c.name”(在MySQL中两者都是相同的,假定项的名称是唯一的)。 但是,这又产生了另一个类似

  • 问题内容: 为什么我们不能在MySQL中使用*关键字进行连接? 要么 还有其他方法可以访问列中的值而无需显式使用列名吗? 问题答案: 要连接表中的所有列,不能使用关键字,但是需要显式列出所有列: 或者您可能想使用它将跳过空值的方法: 如果您不想手动指定所有列名,则可以使用动态查询。该查询将返回表的所有列名称: 并使用GROUP_CONCAT,您可以获得所有列名称的列表: 用逗号分隔的格式引用: 因

  • 本文向大家介绍MySQL 选择所有列(*),包括了MySQL 选择所有列(*)的使用技巧和注意事项,需要的朋友参考一下 示例 询问 结果 您可以通过执行以下操作从一个连接的一个表中选择所有列: 最佳实践*除非正在调试或获取row(s)关联数组,否则不要使用,否则架构更改(ADD / DROP /重新排列列)可能会导致讨厌的应用程序错误。另外,如果提供结果集中所需的列列表,MySQL的查询计划程序通