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

Tại sao Oracle không nói là biểu thức GROUP BY?

Điều này xảy ra với bạn chỉ vì MySQL phá vỡ logic của SQL.

Giả sử chúng ta có bảng trống:

id ename dept
1  mark  10
2  John  10
3  Mary  10
4  Jane  20

và truy vấn:

select dept, ename
from emp 
group by dept;

bạn sẽ nhận được gì? Bạn sẽ nhận được hai dòng, bởi vì có hai phòng ban, nhưng truy vấn yêu cầu tên ename. Đối với 20 là rõ ràng nhưng đối với 10 động cơ sẽ trả lại những gì?

Nó sẽ trả về một lỗi. Không thể đoán được ename nào để cung cấp. Phép màu bắn lỗi - lỗi của bạn, nhưng MySQL nhận được một ename (không được đảm bảo).

Các truy vấn đúng sẽ là:

select dept, max(ename) --the latest, alaphabeticaly
from emp 
group by dept;

--all enames and groups
select dept, ename 
from emp 
group by dept, ename;

Sau khi sửa phần này, bạn sẽ phải giải quyết

COUNT(*) over() AS rowcount

phần. Trong oracle, AFAIK, bạn không thể kết hợp các chức năng phân tích với nhóm theo truy vấn.



  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ử dụng hàm trong mệnh đề where với tham số clob

  2. Cách thêm số thứ tự cho từng phần tử trong nhóm bằng truy vấn SQL không có bảng tạm thời

  3. java.lang.ClassCastException:com.mchange.v2.c3p0.impl.NewProxyConnection

  4. Tương đương COLLATE có dấu và không phân biệt chữ hoa chữ thường trong Oracle

  5. Các công cụ để tạo một sơ đồ cơ sở dữ liệu / sơ đồ ER từ cơ sở dữ liệu Oracle hiện có?