Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lỗi (truy vấn con một hàng trả về nhiều hơn một hàng)

Đây là truy vấn của bạn:

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

Một truy vấn con trong select được sử dụng như vậy được gọi là truy vấn con vô hướng . Một truy vấn con như vậy có thể được sử dụng khi một giá trị vô hướng (tức là một giá trị đơn lẻ chẳng hạn như một số hoặc một chuỗi) có thể được sử dụng.

Truy vấn con vô hướng phải đáp ứng hai điều kiện:

  • Nó trả về nhiều nhất một hàng.
  • Nó trả về một cột.

Giải pháp trong trường hợp của bạn rất đơn giản, sử dụng LEFT JOIN :

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

Hoặc, trong Oracle 12C, bạn có thể sử dụng phép nối bên:

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

Cả hai trông giống nhau trong trường hợp này, nhưng một phép nối bên cũng có thể được sử dụng cho một truy vấn con tương quan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL / SQL:loại bỏ các ký tự khoảng trắng khỏi một chuỗi

  2. ORA-00904 Số nhận dạng không hợp lệ ”cho một số nhận dạng trong một nhóm theo mệnh đề

  3. Làm cách nào để đưa ra nhiều điều kiện trong toán tử LIKE?

  4. Tại sao Oracle không cho bạn biết BẰNG bảng hoặc khung nhìn nào không tồn tại?

  5. Tôi tiếp tục gặp lỗi bên cạnh VARCHAR trả về (4)