如何将MySQL查询结果存储到另一个表中?

56
如何将以下查询结果存储到另一个表中,考虑到已经创建了一个合适的表?
SELECT labels.label,shortabstracts.ShortAbstract,images.LinkToImage,types.Type
FROM ner.images,ner.labels,ner.shortabstracts,ner.types
WHERE
  labels.Resource=images.Resource
  AND labels.Resource=shortabstracts.Resource
  AND labels.Resource=types.Resource;
5个回答

126
如果表不存在(例如您不想创建它,因为它可能有很多列名),您可以动态创建它。...
查询:
CREATE TABLE another_table SELECT /* your query goes here */

6
这是一个很棒的动态创建表格的方法,谢谢。 - Md. Mohsin
3
尽管 OP 已经说过表格已经被创建了,但对于那些不想单独创建一个新表格来存储结果的人来说,这个答案非常完美。可以省略一个步骤。 - user766353
了不起的答案! - geekidharsh
这让我兴奋起来了。太棒了! - MrrMan
有没有办法在本地创建表以供后续查询,但不在服务器上创建表? - Aaron Franke

49

您可以使用 INSERT INTO TABLE SELECT 语法:

INSERT INTO new_table_name
SELECT labels.label,shortabstracts.ShortAbstract,images.LinkToImage,types.Type 
FROM ner.images,ner.labels,ner.shortabstracts,ner.types 
WHERE labels.Resource=images.Resource AND labels.Resource=shortabstracts.Resource 
AND labels.Resource=types.Resource;

18

如果您的表不存在,则

CREATE TABLE new_table SELECT //write your query here

如果您的表已经存在,那么您只需要插入查询语句

INSERT INTO new_table SELECT //write your query here

更多信息请查看这里这里


1
两个表格中的列名应该相同。 - Sameer Bahad
@SameerBahad 是的,列名应该相同,如果不同则需要分配。 - tarikul05

8
INSERT INTO another_table SELECT /*your query goes here*/

0
在SQLite Studio中,我注意到需要使用“AS”关键字:
查询:
CREATE TABLE another_table AS SELECT /* your query goes here */

误导性注释 - b10n1k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接