2012-05-10 59 views
0

我有两个表:更改数据库结构:需要一个SQL查询

connections 
id | publisherId | authorId 

books 
id | connectionId | title 

我想合并这些表只得到一个表:

books 
id| publisherId | authorId | title 

我怎样才能做到这一点只有一个SQL查询?

+0

您不能在一个查询中执行DML和DDL操作。所以你需要将它拆分为:a)修改表b)修改数据 – zerkms

+0

实际上他想做四件事,创建一个新表,用joe建议的INNER JOIN填充它,然后放下旧书表并重命名新表书籍。 –

回答

3
CREATE TABLE newtable 
SELECT b.id, c.publisherId, c.authorID, b.title 
FROM books b 
INNER JOIN connections c 
on c.id = b.connectionId 

未经测试,但应该这样做。我假设你想要书籍表中的ID,否则你需要c.id而不是b.id.

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

+0

它工作。谢谢! – user1267570

0
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部分查询:

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语句测试来确保您的列名是您想要的。如果要更改列名称,请更改所选每列的as ...名称。