7

3 つのテーブルの結合を想像してみましょう。たとえば、14 列あります。列の 1 つの名前を別名で変更したいと考えています。selectステートメントに他の13列の名前を書かなくてもいい方法はありますか?

私が疑似コードで探しているのは

SELECT * [rename user.login as username] from users join 
        (select * from statistics join accounts)
4

2 に答える 2

6
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
于 2012-04-18T09:02:52.080 に答える
4

あなたが提案した構文は良いものです、IMO。実際、データベース言語のチュートリアル Dに非常によく似ています。

user RENAME ( login AS username )

userrelvarから 14 個の属性すべてを射影し、そのうちの 1 つを指定された名前に変更します。

同様に、チュートリアル D にはALL BUT射影演算子があります。

user { ALL BUT login }

あなたの場合、13個の属性の関係になります。

悲しいことに、SQL にはこれらの便利なショートカットがなく、おそらく今後もありません。SELECT *おそらく、初期の頃に入手できたのは幸運だったと考えるべきでしょう。最近では決して許可されませんでした!SQL ユーザーを代表するグループは、SELECT * BUT <commalist>型構文の提案を SQL 標準委員会に提出しましたが、却下されました。SELECT *SOでも嫌われています!

于 2012-04-18T13:21:10.407 に答える