3 つのテーブルの結合を想像してみましょう。たとえば、14 列あります。列の 1 つの名前を別名で変更したいと考えています。selectステートメントに他の13列の名前を書かなくてもいい方法はありますか?
私が疑似コードで探しているのは
SELECT * [rename user.login as username] from users join
(select * from statistics join accounts)
select users.login as username, users.*
from users
残念ながら、列は 2 回表示されますが、できることは何もありません。
結合すると、次のようになります。
select u.login as username, u.*, s.*
from users as u, statistics as s
where u.user_id = s.user_id
あなたが提案した構文は良いものです、IMO。実際、データベース言語のチュートリアル Dに非常によく似ています。
user RENAME ( login AS username )
user
relvarから 14 個の属性すべてを射影し、そのうちの 1 つを指定された名前に変更します。
同様に、チュートリアル D にはALL BUT
射影演算子があります。
user { ALL BUT login }
あなたの場合、13個の属性の関係になります。
悲しいことに、SQL にはこれらの便利なショートカットがなく、おそらく今後もありません。SELECT *
おそらく、初期の頃に入手できたのは幸運だったと考えるべきでしょう。最近では決して許可されませんでした!SQL ユーザーを代表するグループは、SELECT * BUT <commalist>
型構文の提案を SQL 標準委員会に提出しましたが、却下されました。SELECT *
SOでも嫌われています!