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

cú pháp câu lệnh Oracle select đơn giản

SELECT name
FROM   FRUIT
WHERE  color IN ( 'Red', 'Green' )
GROUP BY name
HAVING COUNT( DISTINCT color ) = 2;

Bạn cũng có thể sử dụng bộ sưu tập để làm điều tương tự:

CREATE FruitColorTableType AS TABLE OF FRUIT.COLOR%TYPE;
/

SELECT DISTINCT
       Name
FROM   FRUIT f
WHERE  FruitColorTableType( 'Red', 'Green' )
       SUBMULTISET OF
       CAST( MULTISET(
         SELECT Color
         FROM   FRUIT c
         WHERE  c.name = f.name
       ) AS FruitColorTableType );

HOẶC:

SELECT name
FROM   FRUIT
WHERE  color MEMBER OF FruitColorTableType( 'Red', 'Green' )
GROUP BY name
HAVING COUNT( DISTINCT color ) = 2;

và nếu bạn viết lại nó dưới dạng một hàm / thủ tục, bạn có thể chuyển bộ sưu tập vào dưới dạng đối số và sử dụng CARDINALITY() chứ không phải mã hóa khó kích thước của bộ sưu tập.

(Chưa kiểm tra hai truy vấn cuối cùng này nên có thể có một số lỗi chính tả)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mục đích của tùy chọn ghi nhật ký / ghi nhật ký trong Oracle là gì

  2. Lỗi SSMA cho Oracle Kết nối với Oracle

  3. lỗi nội bộ (00801) khi kết hợp hai bộ sưu tập trong oracle 10g

  4. Các bản ghi được chèn vào bảng của tôi thông qua máy khách SQL không hiển thị khi được sử dụng trong chương trình jdbc

  5. Tạo bảng này trong oracle 10g