PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Perbaiki “ERROR:  missing FROM-clause entry for table” di PostgreSQL saat menggunakan UNION, EXCEPT, atau INTERSECT

Jika Anda mendapatkan “ERROR:missing FROM-clause entry for table ” di PostgreSQL saat menggunakan operator seperti UNION , INTERSECT , atau EXCEPT , bisa jadi karena Anda mengkualifikasikan nama kolom dengan nama tabelnya.

Untuk memperbaikinya, hapus nama tabel atau gunakan alias kolom.

Contoh Kesalahan

Berikut contoh kode yang menghasilkan kesalahan:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;

Hasil:

ERROR:  missing FROM-clause entry for table "teachers"
LINE 4: ORDER BY Teachers.TeacherName ASC;

Dalam hal ini saya mencoba mengurutkan hasilnya dengan TeacherName kolom, tapi saya memenuhi syarat kolom itu dengan nama tabel (saya menggunakan Teachers.TeacherName untuk referensi nama kolom).

Tabel referensi seperti ini tidak berfungsi saat memesan hasil UNION , EXCEPT , atau INTERSECT .

Solusi 1

Salah satu cara untuk memperbaiki masalah ini adalah dengan menghapus nama tabel dari ORDER BY klausa:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Solusi 2

Cara lain untuk memperbaikinya adalah dengan menggunakan alias untuk kolom:

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Dengan opsi ini, kami menetapkan alias ke kolom, lalu merujuk alias itu di ORDER BY klausa.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana IsFinite() Bekerja di PostgreSQL

  2. Pertemuan PostgreSQL Praha

  3. Apakah kita siap untuk PGDay Nordik?

  4. Pilih nomor baris di postgres

  5. Dapatkan Hari Pertama Bulan Ini di PostgreSQL