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

ORA-00907 Vấn đề thiếu dấu ngoặc phải - chọn theo thứ tự bằng cách truy vấn chèn bên trong

Cả hai câu trả lời hiện tại đều bỏ qua thực tế là sử dụng order byrownum trong cùng một truy vấn vốn đã rất nguy hiểm. Hoàn toàn không có gì đảm bảo rằng bạn sẽ nhận được dữ liệu mà bạn muốn. Nếu bạn muốn hàng đầu tiên từ một truy vấn có thứ tự, bạn phải sử dụng truy vấn phụ:

insert into my_tbl ( col1, col2 )
select data, 'more data'
  from ( select data
           from fir_tabl
          where id = 1
          order by created_on desc )
 where rownum = 1
       ;

Bạn cũng có thể sử dụng một hàm như rank để sắp xếp dữ liệu theo phương pháp bạn muốn, mặc dù nếu bạn có hai created_on ngày trùng nhau, bạn sẽ nhận được 2 giá trị bằng rnk = 1 .

insert into my_tbl ( col1, col2 )
select data, 'more data'
  from ( select data
              , rank() over ( order by created_on desc ) as rnk
           from fir_tabl
          where id = 1)
 where rnk = 1
       ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa kết nối trình điều khiển OCI và THIN với kết nối nguồn dữ liệu giữa java và oracle XE là gì?

  2. Truy xuất thông tin cột (khóa tổng hợp) trong SQL

  3. Bình nào trên máy chủ weblogic / các tài nguyên khác có thể có lớp:oracle.security.jps.ee.http.JpsFilter?

  4. Oracle TNS tên không hiển thị khi thêm kết nối mới vào SQL Developer

  5. chuyển đổi hàng thành cột trong oracle10g