Mysql 更改数据库结构:需要SQL查询

Mysql 更改数据库结构:需要SQL查询,mysql,sql,database,Mysql,Sql,Database,我有两张桌子: connections id | publisherId | authorId 及 我要合并这些表以仅获得一个表: books id| publisherId | authorId | title 如何仅使用一个SQL查询就可以做到这一点 CREATE TABLE newtable SELECT b.id, c.publisherId, c.authorID, b.title FROM books b INNER JOIN connections c on c.id = b.

我有两张桌子:

connections
id | publisherId | authorId

我要合并这些表以仅获得一个表:

books
id| publisherId | authorId | title
如何仅使用一个SQL查询就可以做到这一点

CREATE TABLE newtable
SELECT b.id, c.publisherId, c.authorID, b.title
FROM books b
INNER JOIN connections c
on c.id = b.connectionId
未经测试,但这应该可以做到。我假设您需要books表中的ID,否则您需要c.ID而不是b.ID

然后,您可以删除旧表并将其重命名为您想要的任何名称

CREATE TABLE connections_books 
SELECT books.id as id, 
       connections.publisherId as publisherId, 
       connections.authorId as authorId, 
       books.title as title 
FROM books join connections on books.connectionId = connections.id;
未经测试,但这应该可以做到。我假设您需要books表中的ID,否则您需要c.ID而不是b.ID

然后,您可以删除旧表并将其重命名为您想要的任何名称

CREATE TABLE connections_books 
SELECT books.id as id, 
       connections.publisherId as publisherId, 
       connections.authorId as authorId, 
       books.title as title 
FROM books join connections on books.connectionId = connections.id;
首先仅使用
选择部分测试查询:

SELECT books.id as id, 
       connections.publisherId as publisherId, 
       connections.authorId as authorId, 
       books.title as title 
FROM books join connections on books.connectionId = connections.id;
一旦这给了您想要的,就开始创建表

确保新表中的列名正确非常重要。使用select语句测试以确保列名符合您的要求。如果要更改列名,请将所选每列的
更改为…
名称

首先仅使用
选择部分测试查询:

SELECT books.id as id, 
       connections.publisherId as publisherId, 
       connections.authorId as authorId, 
       books.title as title 
FROM books join connections on books.connectionId = connections.id;
一旦这给了您想要的,就开始创建表


确保新表中的列名正确非常重要。使用select语句测试以确保列名符合您的要求。如果要更改列名,请将所选每列的
更改为…
名称。

不能在一个查询中同时执行DML和DDL操作。因此您需要将其拆分为:a)修改表b)修改数据实际上他想做四件事,创建一个新表,按照joe的建议使用内部联接填充它,然后删除旧的books表并将新表重命名为books。您不能在一个查询中同时执行DML和DDL操作。因此,您需要将其拆分为:a)修改表b)修改数据实际上他想做四件事,创建一个新表,按照joe的建议使用内部联接填充它,然后删除old books表并将新表重命名为books。