目次

JOINで一方のテーブルの列をすべて選択する - SQL

JOINで一方のテーブルの列をすべて選択する記述について紹介します。

次のテーブルを用意します。
Working テーブル
idnamevaluecategorymemo
1Penguin300B南国にすむペンギンです
2Whale420M北極海のクジラです
3Moffu880NULLよくわからない生き物です
4Camel220M砂漠にすむラクダです
5Owl90B関東のフクロウです
6Duck120Bそこらへんのアヒルです
7Lizard60Rひっそりと生きるトカゲです
WorkingCategory テーブル
idcategorynameflag
1B鳥類1
2B鳥類2
3M哺乳類1
4F魚類1

以下のSQLでinner joinで結合してデータを選択します。
select * from Working inner join WorkingCategory on Working.category=WorkingCategory.category;

結果は以下の通りとなりますが、id, category 列が重複しています。
idnamevaluecategorymemoidcategorynameflag
1Penguin300B南国にすむペンギンです1B鳥類1
5Owl90B関東のフクロウです1B鳥類1
6Duck120Bそこらへんのアヒルです1B鳥類1
1Penguin300B南国にすむペンギンです2B鳥類2
5Owl90B関東のフクロウです2B鳥類2
6Duck120Bそこらへんのアヒルです2B鳥類2
2Whale420M北極海のクジラです3M哺乳類1
4Camel220M砂漠にすむラクダです3M哺乳類1

あいまいさを無くすために、以下のSQLに変更します。
select Working.id, Working.value, Working.category, Working.memo, WorkingCategory.id as cid, WorkingCategory.category as cc, WorkingCategory.name as categoryname, WorkingCategory.flag
  from Working inner join WorkingCategory on Working.category=WorkingCategory.category;

idnamevaluecategorymemocidcccategorynamecategorynameflag
データは先の結果と同じ
上記のSQLで対応できますが、列数が増えると記述が大変です。 今回の例では、Workingテーブルのすべての列と、WorkingCategory のname列が表示できれば十分なため、もっと簡単にSQLを記述したいです。

対処法

テーブルのすべての列を表示する場合は、次の記述が利用できます。
(テーブル名).*

SQL

以下のSQKを作成して実行します。
select Working.*, WorkingCategory.name as categoryname from Working
  inner join WorkingCategory on Working.category=WorkingCategory.category;
Working.*の記述で、 Workingテーブルのすべての列を選択できます。

実行結果

SQL文を実行すると、以下の結果となります。Workingテーブルのすべての列が選択できています。
idnamevaluecategorymemocategoryname
1Penguin300B南国にすむペンギンです鳥類
5Owl90B関東のフクロウです鳥類
6Duck120Bそこらへんのアヒルです鳥類
1Penguin300B南国にすむペンギンです鳥類
5Owl90B関東のフクロウです鳥類
6Duck120Bそこらへんのアヒルです鳥類
2Whale420M北極海のクジラです哺乳類
4Camel220M砂漠にすむラクダです哺乳類
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2023-05-06
作成日: 2023-05-05
iPentec all rights reserverd.