我有两个表,location和locationdata。我想使用join从两个表中查询数据,并将结果存储在MySQL中尚未出现的新表(locationCreatedNew)中。我可以在MySQL中执行此操作吗?
SELECT location.id,locationdata.name INTO locationCreatedNew FROM location RIGHT JOIN locationdata ON location.id = locationdata.location_location_id;
答案 0 :(得分:1)
OP中的示例代码是SQL Server中的语法,MySQL中的示例代码类似于:
CREATE TABLE locationCreatedNew
SELECT * FROM location RIGHT JOIN locationdata
ON location.id=locationdata.location_location_id;
答案 1 :(得分:0)
使用如下的查询。
create table new_tbl as
select col1, col2, col3 from old_tbl t1, old_tbl t2
where condition;
答案 2 :(得分:0)
Referance:CREATE TABLE ... SELECT
对于 CREATE TABLE ... SELECT ,目标表不保留有关selected-from表中的列是否为生成列的信息。语句的SELECT部分无法将值分配给目标表中的生成列。
可能会发生某些数据类型转换。例如,不保留 AUTO_INCREMENT 属性, VARCHAR 列可以成为 CHAR 列。再培训属性为 NULL (或 NOT NULL ),对于那些具有它们的列, CHARACTER SET , COLLATION , COMMENT 和 DEFAULT 子句。
使用 CREATE TABLE ... SELECT 创建表时,请确保在查询中为任何函数调用或表达式设置别名。如果不这样做, CREATE 语句可能会失败或导致不合需要的列名。
CREATE TABLE newTbl
SELECT tbl1.clm, COUNT(tbl2.tbl1_id) AS number_of_recs_tbl2
FROM tbl1 LEFT JOIN tbl2 ON tbl1.id = tbl2.tbl1_id
GROUP BY tbl1.id;
注意:newTbl
是您要创建的新表的名称。您可以使用SELECT * FROM othertable
这是一个返回应该从中创建表的数据的查询。
您还可以在创建的表中明确指定列的数据类型:
CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM bar;
对于 CREATE TABLE ... SELECT ,如果给出 IF NOT EXISTS 并且目标表存在,则不会向目标表中插入任何内容,并且该语句不是记录。
为确保二进制日志可用于重新创建原始表, MySQL 不允许在 CREATE TABLE ... SELECT 期间进行并发插入。
您不能在CREATE TABLE new_table SELECT ... FROM old_table
等语句中将 FOR UPDATE 用作 SELECT 的一部分....如果您尝试这样做,请使用语句失败。
请检查一下。希望这能帮助你。