Oracleでは、
SELECT * FROM dual
は、列名='DUMMY' 値='X'の1行を返す。
PostgreSQL では、、、
dual は存在しないのでFROM句を省略するのだが、
SELECT *
とすると、
SQLエラー [42601]: ERROR: テーブル指定のないSELECT *は無効です
になる
Oracleと同じことをするには、WITH句でdualを用意する
WITH dual AS( SELECT 'X' AS DUMMY ) SELECT * FROM dual
これでOracleと同じことができる。
MySQLでは、
SELECT 1 FROM dual
は、列名='1' 値=1 が返ってくるしFROMを省略して
SELECT 1
でも同じである。
ただ上に書いた * (アスタリスク)はどうなるかというと、、
SELECT *
や、
SELECT * FROM dual
は、
SQLエラー [1096] [HY000]: No tables used
となる。
でも、
SELECT COUNT(*) AS cnt FROM DUAL
や、
SELECT COUNT(*) AS cnt
は、きちんと COUNT = 1 が返ってくる