私は2つのテーブルを持っています:
connections
id | publisherId | authorId
と
books
id | connectionId | title
これらのテーブルをマージして、テーブルを 1 つだけ取得したい:
books
id| publisherId | authorId | title
たった 1 つの 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
テストされていませんが、これでうまくいくはずです。book テーブルからの ID が必要だと思います。それ以外の場合は、b.id の代わりに c.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
最初に、次の部分だけを使用してクエリをテストします。
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 ...
列名を変更する場合は、選択した各列の名前を変更します。