平成27年春期午後問6

aさん  
(No.1)
https://www.ap-siken.com/kakomon/27_haru/pm06.html
〔非営業日利用一覧表示機能の実装〕のSQL文において
-----
SELECT AC.*
FROM アクセスログ AC
-----
とFROMの所でACという別名をつける前にSELECT文でACという別名を使っていますがこのようなことは実際に可能なのでしょうか?また、
-----
SELECT * 
FROM アクセスログ AC
-----
と書くのではだめなのでしょうか?

ご返答よろしくお願いします。
2022.08.09 13:48
GinSanaさん 
AP プラチナマイスター
(No.2)
どっちもできます。AC.は別名というよりテーブル修飾というんですが

DBの構文解釈で、実際に読まれるときは
AC.カラム名 AS カラム名
として補完されるので、カラム名が一意である(他のテーブルとかと結合して、同じカラムの名前があって、どのテーブルのカラムなのかがわからないとか、がない)場合はAC.の部分はなくても大丈夫、ってことです。
2022.08.09 14:23
GinSanaさん 
AP プラチナマイスター
(No.3)
>FROMの所でACという別名をつける前にSELECT文でACという別名を使っています

qiita.com/k_0120/items/a27ea1fc3b9bddc77fa1
@k_0120(株式会社エイチームライフデザイン)
SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話

データベースは下記順序でSQLを実行していきます。

フロム句

ジョイン句

ウェアー句

グループバイ句

ハビング句

セレクト句

オーダーバイ句

リミット句

まあ、そうなれば、別に大丈夫ってのがわかると思います。
2022.08.09 14:28
GinSanaさん 
AP プラチナマイスター
(No.4)
この投稿は投稿者により削除されました。(2022.08.09 14:40)
2022.08.09 14:40
GinSanaさん 
AP プラチナマイスター
(No.5)
動作はsqlite3で検証しました


SQLite version 3.38.5 2022-05-06 15:25:27
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> with temp as (select 2 as hoge) select ac.* from temp ac;

2

sqlite> with temp as (select 2 as hoge) select * from temp ac;

2
sqlite>

2022.08.09 14:40
aさん  
(No.6)
わかりやすい説明ありがとうございます。
SELECTよりも後にFROMが書かれていたとしても処理としてはFROMから先に行うということですね!
2022.08.09 14:57

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop