Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kesalahan (subquery satu baris mengembalikan lebih dari satu baris)

Ini pertanyaan Anda:

select en.*,
       (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;

Sebuah subquery di select digunakan seperti ini disebut subquery skalar . Subquery seperti itu dapat digunakan di mana nilai skalar (yaitu nilai tunggal seperti angka atau string) dapat digunakan.

Subquery skalar harus memenuhi dua kondisi:

  • Ini mengembalikan paling banyak satu baris.
  • Ini mengembalikan satu kolom.

Solusi dalam kasus Anda sederhana, menggunakan LEFT JOIN :

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join
     data2 sf
     on 1=1;

Atau, di Oracle 12C, Anda dapat menggunakan gabungan lateral:

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join lateral
     data2 sf
     on 1=1;

Keduanya terlihat sama dalam kasus ini, tetapi gabungan lateral juga dapat digunakan untuk subkueri yang berkorelasi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cabut Hak Istimewa di Oracle

  2. Bagaimana cara melakukan FULL OUTER JOIN di ORACLE menggunakan operator '+'?

  3. Pilih 150 baris pertama, lalu 150 berikutnya dan seterusnya?

  4. Bandingkan String di Oracle Case When

  5. Oracle:ORA-12154:Masalah TNS:Excel 64-bit/Windows 10 64-bit