Saya memiliki kueri ini yang saya tulis di PostgreSQL yang mengembalikan kesalahan yang mengatakan:
[Err] ERROR:
LINE 3: FROM (PILIH DISTINCT (identifiant) AS made_only_recharge
Ini adalah keseluruhan pertanyaan:
SELECT COUNT (made_only_recharge) AS made_only_recharge
FROM (
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER = '0130'
EXCEPT
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER != '0130'
)
Saya memiliki pertanyaan serupa di Oracle yang berfungsi dengan baik. Satu-satunya perubahan adalah yang saya miliki EXCEPT
di Oracle, saya telah menggantinya dengan MINUS
kata kunci. Saya baru mengenal Postgres dan tidak tahu apa yang diminta. Bagaimana cara yang benar untuk menangani ini?
sql
oracle
postgresql
subquery
roykasa
sumber
sumber
CALLEDNUMBER = '0130'
.Jawaban:
tambahkan
ALIAS
di subkueri,SELECT COUNT(made_only_recharge) AS made_only_recharge FROM ( SELECT DISTINCT (identifiant) AS made_only_recharge FROM cdr_data WHERE CALLEDNUMBER = '0130' EXCEPT SELECT DISTINCT (identifiant) AS made_only_recharge FROM cdr_data WHERE CALLEDNUMBER != '0130' ) AS derivedTable -- <<== HERE
sumber
AS pg_sucks
, yang berarti "baik, di sini Anda memiliki beberapa pengenal yang berlebihan, tetapi Anda dapat membuat beberapa secara internal sendiri, postgres sialan!" :)Dalam kasus tabel bersarang, beberapa DBMS perlu menggunakan alias seperti MySQL dan Oracle tetapi yang lain tidak memiliki persyaratan yang ketat, tetapi masih memungkinkan untuk menambahkannya untuk menggantikan hasil kueri dalam.
sumber