Nếu đếm 0 mysql

Mệnh đề

WHERE condition
9 cho phép bạn chỉ định một hoặc nhiều truy vấn con có thể được tham chiếu theo tên trong truy vấn chính. Các truy vấn con hoạt động hiệu quả như các bảng hoặc dạng xem tạm thời trong suốt thời gian của truy vấn chính. Mỗi truy vấn con có thể là một câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
2,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
3,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
4,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
5 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
6. Khi viết một câu lệnh sửa đổi dữ liệu [
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
4,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
5 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
6] trong
WHERE condition
9, thường bao gồm một mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11. Đó là đầu ra của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11, không phải bảng bên dưới mà câu lệnh sửa đổi, tạo thành bảng tạm thời được đọc bởi truy vấn chính. Nếu
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11 bị bỏ qua, câu lệnh vẫn được thực thi, nhưng nó không tạo ra kết quả nào nên nó không thể được tham chiếu dưới dạng bảng bởi truy vấn chính

Tên [không có trình độ giản đồ] phải được chỉ định cho mỗi truy vấn

WHERE condition
9. Theo tùy chọn, có thể chỉ định danh sách tên cột;

Nếu

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
15 được chỉ định, nó cho phép truy vấn con
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 tự tham chiếu theo tên. Một truy vấn con như vậy phải có dạng

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
7

nơi tự tham chiếu đệ quy phải xuất hiện ở phía bên phải của

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17. Chỉ cho phép một tham chiếu đệ quy cho mỗi truy vấn. Câu lệnh sửa đổi dữ liệu đệ quy không được hỗ trợ nhưng bạn có thể sử dụng kết quả của truy vấn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 đệ quy trong câu lệnh sửa đổi dữ liệu. Xem Phần 7. 8 làm ví dụ

Một hiệu ứng khác của

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
15 là các truy vấn của
WHERE condition
9 không cần phải sắp xếp thứ tự. một truy vấn có thể tham chiếu đến một truy vấn khác sau này trong danh sách. [Tuy nhiên, các tham chiếu vòng hoặc đệ quy lẫn nhau không được triển khai. ] Không có truy vấn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
15, truy vấn
WHERE condition
9 chỉ có thể tham chiếu truy vấn anh chị em
WHERE condition
9 truy vấn sớm hơn trong danh sách
WHERE condition
9

Khi có nhiều truy vấn trong mệnh đề

WHERE condition
9, thì chỉ nên viết
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
15 một lần, ngay sau
WHERE condition
9. Nó áp dụng cho tất cả các truy vấn trong mệnh đề
WHERE condition
9, mặc dù nó không ảnh hưởng đến các truy vấn không sử dụng tham chiếu đệ quy hoặc chuyển tiếp

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 tùy chọn tính toán cột trình tự tìm kiếm có thể được sử dụng để sắp xếp thứ tự kết quả của truy vấn đệ quy theo thứ tự chiều rộng hoặc chiều sâu trước. Danh sách tên cột được cung cấp chỉ định khóa hàng sẽ được sử dụng để theo dõi các hàng đã truy cập. Một cột có tên
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
10 sẽ được thêm vào danh sách cột kết quả của truy vấn
WHERE condition
9. Cột này có thể được sắp xếp theo thứ tự trong truy vấn bên ngoài để đạt được thứ tự tương ứng. Xem Phần 7. 8. 2. 1 ví dụ

Mệnh đề tùy chọn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
12 được sử dụng để phát hiện các chu kỳ trong các truy vấn đệ quy. Danh sách tên cột được cung cấp chỉ định khóa hàng sẽ được sử dụng để theo dõi các hàng đã truy cập. Một cột có tên
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
13 sẽ được thêm vào danh sách cột kết quả của truy vấn
WHERE condition
9. Cột này sẽ được đặt thành
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
15 khi một chu kỳ được phát hiện, nếu không thì thành
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
16. Hơn nữa, quá trình xử lý liên kết đệ quy sẽ dừng lại khi một chu trình được phát hiện.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
15 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
16 phải là hằng số và chúng phải bắt buộc đối với một kiểu dữ liệu chung và kiểu dữ liệu phải có toán tử bất đẳng thức. [Chuẩn SQL yêu cầu chúng phải là hằng số Boolean hoặc chuỗi ký tự, nhưng PostgreSQL không yêu cầu điều đó. ] Theo mặc định,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
19 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
10 [thuộc loại
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11] được sử dụng. Hơn nữa, một cột có tên
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
12 sẽ được thêm vào danh sách cột kết quả của truy vấn
WHERE condition
9. Cột này được sử dụng nội bộ để theo dõi các hàng đã truy cập. Xem Phần 7. 8. 2. 2 ví dụ

Cả mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
12 chỉ hợp lệ cho các truy vấn
WHERE condition
9 đệ quy.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 phải là một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 [hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
19] gồm hai lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 [hoặc tương đương] [không có các lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 lồng nhau]. Nếu cả hai mệnh đề được sử dụng, cột được thêm bởi mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 sẽ xuất hiện trước các cột được thêm bởi mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
12

Truy vấn chính và truy vấn

WHERE condition
9 đều được thực hiện [theo danh nghĩa] cùng một lúc. Điều này ngụ ý rằng tác động của câu lệnh sửa đổi dữ liệu trong
WHERE condition
9 không thể được nhìn thấy từ các phần khác của truy vấn, ngoài việc đọc đầu ra
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11 của nó. Nếu hai câu lệnh sửa đổi dữ liệu như vậy cố gắng sửa đổi cùng một hàng, kết quả sẽ không được chỉ định

Một thuộc tính quan trọng của truy vấn

WHERE condition
9 là chúng thường chỉ được đánh giá một lần cho mỗi lần thực hiện truy vấn chính, ngay cả khi truy vấn chính đề cập đến chúng nhiều lần. Đặc biệt, các câu lệnh sửa đổi dữ liệu được đảm bảo thực hiện một lần và chỉ một lần, bất kể truy vấn chính đọc tất cả hay bất kỳ đầu ra nào của chúng

Tuy nhiên, truy vấn

WHERE condition
9 có thể được đánh dấu
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 để loại bỏ bảo đảm này. Trong trường hợp đó, truy vấn
WHERE condition
9 có thể được xếp vào truy vấn chính giống như thể nó là một ______11 phụ đơn giản trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 của truy vấn chính. Điều này dẫn đến tính toán trùng lặp nếu truy vấn chính đề cập đến truy vấn
WHERE condition
9 đó nhiều lần; .
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 bị bỏ qua nếu nó được đính kèm với truy vấn
WHERE condition
9 là truy vấn đệ quy hoặc không có tác dụng phụ [i. e. , không phải là một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 đơn giản không chứa các hàm dễ bay hơi]

Theo mặc định, một truy vấn

WHERE condition
9 không có tác dụng phụ được đưa vào truy vấn chính nếu nó được sử dụng chính xác một lần trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 của truy vấn chính. Điều này cho phép tối ưu hóa chung hai cấp độ truy vấn trong các tình huống mà điều đó sẽ ẩn về mặt ngữ nghĩa. Tuy nhiên, việc gấp như vậy có thể được ngăn chặn bằng cách đánh dấu truy vấn
WHERE condition
9 là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32. Điều đó có thể hữu ích, ví dụ: nếu truy vấn
WHERE condition
9 đang được sử dụng làm hàng rào tối ưu hóa để ngăn người lập kế hoạch chọn một kế hoạch tồi. Các phiên bản PostgreSQL trước v12 chưa bao giờ gấp như vậy, vì vậy các truy vấn được viết cho các phiên bản cũ hơn có thể dựa vào
WHERE condition
9 để hoạt động như một hàng rào tối ưu hóa

Xem Phần 7. 8 để biết thêm thông tin

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 chỉ định một hoặc nhiều bảng nguồn cho
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1. Nếu nhiều nguồn được chỉ định, kết quả là tích Descartes [nối chéo] của tất cả các nguồn. Nhưng thông thường, các điều kiện đủ điều kiện được thêm vào [thông qua
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38] để hạn chế các hàng được trả về trong một tập con nhỏ của tích Descartes

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 có thể chứa các phần tử sau

WHERE condition
00

Tên [tùy chọn lược đồ đủ điều kiện] của một bảng hoặc dạng xem hiện có. Nếu

WHERE condition
01 được chỉ định trước tên bảng, thì chỉ bảng đó được quét. Nếu
WHERE condition
01 không được chỉ định, bảng và tất cả các bảng con của nó [nếu có] sẽ được quét. Theo tùy chọn, có thể chỉ định
WHERE condition
03 sau tên bảng để biểu thị rõ ràng rằng các bảng con được bao gồm

WHERE condition
04

Tên thay thế cho mục

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 có chứa bí danh. Một bí danh được sử dụng cho ngắn gọn hoặc để loại bỏ sự mơ hồ đối với việc tự tham gia [trong đó cùng một bảng được quét nhiều lần]. Khi một bí danh được cung cấp, nó sẽ ẩn hoàn toàn tên thực của bảng hoặc hàm; . Nếu bí danh được viết, danh sách bí danh cột cũng có thể được viết để cung cấp tên thay thế cho một hoặc nhiều cột của bảng

WHERE condition
11 [
WHERE condition
12 [,. ] ] [ LẶP LẠI [
WHERE condition
13 ] ]

Mệnh đề

WHERE condition
14 sau
WHERE condition
00 chỉ ra rằng nên sử dụng
WHERE condition
16 đã chỉ định để truy xuất tập hợp con của các hàng trong bảng đó. Việc lấy mẫu này diễn ra trước khi áp dụng bất kỳ bộ lọc nào khác, chẳng hạn như điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38. Bản phân phối PostgreSQL tiêu chuẩn bao gồm hai phương pháp lấy mẫu,
WHERE condition
18 và
WHERE condition
19, và các phương pháp lấy mẫu khác có thể được cài đặt trong cơ sở dữ liệu thông qua tiện ích mở rộng

Mỗi phương pháp lấy mẫu

WHERE condition
18 và
WHERE condition
19 chấp nhận một
WHERE condition
12 duy nhất là một phần của bảng để lấy mẫu, được biểu thị bằng phần trăm trong khoảng từ 0 đến 100. Đối số này có thể là bất kỳ biểu thức có giá trị
WHERE condition
23 nào. [Các phương pháp lấy mẫu khác có thể chấp nhận nhiều đối số hơn hoặc khác nhau. ] Hai phương pháp này đều trả về một mẫu được chọn ngẫu nhiên của bảng sẽ chứa xấp xỉ tỷ lệ phần trăm các hàng của bảng đã chỉ định. Phương pháp
WHERE condition
18 quét toàn bộ bảng và chọn hoặc bỏ qua các hàng riêng lẻ một cách độc lập với xác suất được chỉ định. Phương pháp
WHERE condition
19 thực hiện lấy mẫu cấp khối với mỗi khối có cơ hội được chọn cụ thể; . Phương pháp
WHERE condition
19 nhanh hơn đáng kể so với phương pháp
WHERE condition
18 khi tỷ lệ phần trăm lấy mẫu nhỏ được chỉ định, nhưng nó có thể trả về một mẫu ít ngẫu nhiên hơn của bảng do hiệu ứng phân cụm

Mệnh đề tùy chọn

WHERE condition
28 chỉ định một số hoặc biểu thức
WHERE condition
13 để sử dụng để tạo các số ngẫu nhiên trong phương pháp lấy mẫu. Giá trị hạt giống có thể là bất kỳ giá trị dấu phẩy động không null nào. Hai truy vấn xác định cùng giá trị seed và
WHERE condition
12 sẽ chọn cùng một mẫu của bảng, nếu bảng không bị thay đổi trong thời gian đó. Nhưng các giá trị hạt giống khác nhau thường sẽ tạo ra các mẫu khác nhau. Nếu
WHERE condition
28 không được cung cấp thì một mẫu ngẫu nhiên mới sẽ được chọn cho mỗi truy vấn, dựa trên nguồn gốc do hệ thống tạo. Lưu ý rằng một số phương pháp lấy mẫu bổ sung không chấp nhận
WHERE condition
28 và sẽ luôn tạo ra các mẫu mới trong mỗi lần sử dụng

WHERE condition
33

Một sub-

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 có thể xuất hiện trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32. Điều này hoạt động như thể đầu ra của nó được tạo dưới dạng bảng tạm thời trong suốt thời gian của lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 duy nhất này. Lưu ý rằng phụ_____11 phải được bao quanh bởi dấu ngoặc đơn và phải cung cấp bí danh cho nó. Lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
3 cũng có thể được sử dụng ở đây

WHERE condition
39

Truy vấn

WHERE condition
9 được tham chiếu bằng cách viết tên của nó, giống như tên của truy vấn là tên bảng. [Thực tế, truy vấn
WHERE condition
9 ẩn bất kỳ bảng thực nào cùng tên cho mục đích của truy vấn chính. Nếu cần, bạn có thể tham khảo một bảng thực cùng tên bằng lược đồ xác định tên của bảng. ] Bí danh có thể được cung cấp theo cách tương tự như đối với bảng

WHERE condition
42

Lời gọi hàm có thể xuất hiện trong mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32. [Điều này đặc biệt hữu ích cho các hàm trả về tập kết quả, nhưng bất kỳ hàm nào cũng có thể được sử dụng. ] Điều này hoạt động như thể đầu ra của hàm được tạo dưới dạng bảng tạm thời trong suốt thời gian của lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 duy nhất này. Nếu loại kết quả của hàm là hỗn hợp [bao gồm cả trường hợp hàm có nhiều tham số
WHERE condition
45], thì mỗi thuộc tính sẽ trở thành một cột riêng biệt trong bảng ẩn

Khi mệnh đề

WHERE condition
46 tùy chọn được thêm vào lệnh gọi hàm, một cột bổ sung loại
WHERE condition
47 sẽ được thêm vào [các] cột kết quả của hàm. Cột này đánh số các hàng trong tập kết quả của hàm, bắt đầu từ 1. Theo mặc định, cột này được đặt tên là
WHERE condition
48

Một bí danh có thể được cung cấp theo cách tương tự như đối với một bảng. Nếu bí danh được viết, danh sách bí danh cột cũng có thể được viết để cung cấp tên thay thế cho một hoặc nhiều thuộc tính của kiểu trả về tổng hợp của hàm, bao gồm cả cột thứ tự nếu có

Nhiều lệnh gọi hàm có thể được kết hợp thành một mục mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 duy nhất bằng cách bao quanh chúng bằng
WHERE condition
50. Đầu ra của một mục như vậy là sự nối của hàng đầu tiên từ mỗi chức năng, sau đó là hàng thứ hai từ mỗi chức năng, v.v. Nếu một số hàm tạo ra ít hàng hơn các hàm khác, giá trị null sẽ được thay thế cho dữ liệu bị thiếu, sao cho tổng số hàng được trả về luôn bằng với hàm tạo ra nhiều hàng nhất

Nếu hàm đã được xác định là trả về kiểu dữ liệu

WHERE condition
51, thì phải có bí danh hoặc từ khóa
WHERE condition
52, theo sau là danh sách định nghĩa cột ở dạng
WHERE condition
53
WHERE condition
54 [,. ]]. Danh sách định nghĩa cột phải khớp với số thực và loại cột mà hàm trả về

Khi sử dụng cú pháp

WHERE condition
50, nếu một trong các hàm yêu cầu danh sách định nghĩa cột, bạn nên đặt danh sách định nghĩa cột sau lệnh gọi hàm bên trong
WHERE condition
50. Danh sách định nghĩa cột chỉ có thể được đặt sau cấu trúc
WHERE condition
50 nếu chỉ có một hàm duy nhất và không có mệnh đề
WHERE condition
46

Để sử dụng

WHERE condition
59 cùng với danh sách định nghĩa cột, bạn phải sử dụng cú pháp
WHERE condition
50 và đặt danh sách định nghĩa cột bên trong
WHERE condition
50

WHERE condition
62

Một trong

  • WHERE condition
    
    63

  • WHERE condition
    
    64

  • WHERE condition
    
    65

  • WHERE condition
    
    66

Đối với các loại liên kết

WHERE condition
67 và
WHERE condition
68, phải chỉ định điều kiện liên kết, cụ thể là chính xác một trong số
WHERE condition
69,
WHERE condition
70 [,. ]], hoặc
WHERE condition
71. Xem bên dưới để biết ý nghĩa

Mệnh đề

WHERE condition
72 kết hợp hai mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32, để thuận tiện, chúng tôi sẽ gọi là “bảng”, mặc dù trên thực tế, chúng có thể là bất kỳ loại mục nào của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32. Sử dụng dấu ngoặc đơn nếu cần thiết để xác định thứ tự lồng nhau. Trong trường hợp không có dấu ngoặc đơn,
WHERE condition
72s lồng từ trái sang phải. Trong mọi trường hợp,
WHERE condition
72 liên kết chặt chẽ hơn dấu phẩy ngăn cách các mục trong danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32. Tất cả các tùy chọn
WHERE condition
72 chỉ là một sự thuận tiện về mặt công chứng, vì chúng không làm được gì mà bạn không thể làm với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38 đơn giản

WHERE condition
81 trả về tất cả các hàng trong tích Descartes đủ điều kiện [i. e. , tất cả các hàng kết hợp vượt qua điều kiện nối của nó], cộng với một bản sao của mỗi hàng trong bảng bên trái mà không có hàng bên phải vượt qua điều kiện nối. Hàng bên trái này được mở rộng đến toàn bộ chiều rộng của bảng đã tham gia bằng cách chèn các giá trị null cho các cột bên phải. Lưu ý rằng chỉ điều kiện riêng của mệnh đề
WHERE condition
72 được xem xét khi quyết định hàng nào khớp. Điều kiện bên ngoài được áp dụng sau đó

Ngược lại,

WHERE condition
83 trả về tất cả các hàng đã tham gia, cộng với một hàng cho mỗi hàng bên phải chưa khớp [được mở rộng bằng các giá trị rỗng ở bên trái]. Đây chỉ là một sự thuận tiện về mặt ký hiệu, vì bạn có thể chuyển đổi nó thành
WHERE condition
81 bằng cách chuyển đổi bảng bên trái và bên phải

WHERE condition
85 trả về tất cả các hàng đã tham gia, cộng với một hàng cho mỗi hàng bên trái chưa khớp [được mở rộng bằng giá trị rỗng ở bên phải], cộng với một hàng cho mỗi hàng bên phải chưa khớp [được mở rộng bằng giá trị rỗng ở bên trái]

WHERE condition
69

WHERE condition
87 là một biểu thức dẫn đến một giá trị thuộc loại
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11 [tương tự như mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38] chỉ định những hàng nào trong một liên kết được coi là khớp

WHERE condition
90 [,. ] ] [ NHƯ
WHERE condition
91 ]

Một mệnh đề có dạng

WHERE condition
92 là viết tắt của
WHERE condition
93. Ngoài ra,
WHERE condition
94 ngụ ý rằng chỉ một trong mỗi cặp cột tương đương sẽ được đưa vào kết quả nối, không phải cả hai

Nếu tên

WHERE condition
91 được chỉ định, nó sẽ cung cấp bí danh bảng cho các cột tham gia. Chỉ các cột tham gia được liệt kê trong mệnh đề
WHERE condition
94 mới có thể đánh địa chỉ bằng tên này. Không giống như một
WHERE condition
04 thông thường, điều này không ẩn tên của các bảng đã tham gia khỏi phần còn lại của truy vấn. Ngoài ra, không giống như một
WHERE condition
04 thông thường, bạn không thể viết một danh sách bí danh cột — tên đầu ra của các cột tham gia giống như chúng xuất hiện trong danh sách
WHERE condition
94

WHERE condition
71

WHERE condition
71 là cách viết tắt của danh sách
WHERE condition
94 đề cập đến tất cả các cột trong hai bảng có tên trùng nhau. Nếu không có tên cột chung,
WHERE condition
71 tương đương với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
04

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
05

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
05 tương đương với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
07, nghĩa là không có hàng nào bị loại bỏ theo tiêu chuẩn. Chúng tạo ra một tích Descartes đơn giản, kết quả giống như bạn nhận được từ việc liệt kê hai bảng ở cấp cao nhất của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32, nhưng bị hạn chế bởi điều kiện nối [nếu có]

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09

Từ khóa ________ 109 có thể đứng trước mục phụ ____ 11 ________ 632. Điều này cho phép ______ phụ_11 tham chiếu đến các cột của ____632 mục xuất hiện trước nó trong danh sách ____632. [Không có

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09, mỗi tiểu-___11 được đánh giá độc lập và do đó không thể tham khảo chéo bất kỳ mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 nào khác. ]

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 cũng có thể đứng trước một mục gọi hàm
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32, nhưng trong trường hợp này, đó là một từ nhiễu, bởi vì biểu thức hàm có thể tham chiếu đến các mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 trước đó trong mọi trường hợp

Một mục

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 có thể xuất hiện ở cấp cao nhất trong danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 hoặc trong cây
WHERE condition
72. Trong trường hợp sau, nó cũng có thể đề cập đến bất kỳ mục nào ở phía bên trái của
WHERE condition
72 rằng nó nằm ở phía bên phải của

Khi một mục

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 chứa
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 tham chiếu chéo, việc đánh giá tiến hành như sau. đối với mỗi hàng của mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 cung cấp [các] cột được tham chiếu chéo hoặc tập hợp các hàng gồm nhiều mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 cung cấp các cột, mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09 được đánh giá bằng cách sử dụng các giá trị cột của hàng hoặc tập hợp hàng đó. [Các] hàng kết quả được nối như bình thường với các hàng mà chúng được tính toán từ. Điều này được lặp lại cho mỗi hàng hoặc tập hợp các hàng từ [các] bảng nguồn cột

[Các] bảng nguồn cột phải là

WHERE condition
67 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32 được nối với mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09, nếu không sẽ không có một tập hợp các hàng được xác định rõ để từ đó tính toán từng tập hợp các hàng cho mục
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
09. Vì vậy, mặc dù một cấu trúc chẳng hạn như
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
35 RIGHT JOIN LATERAL
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
36 có giá trị về mặt cú pháp, nhưng thực tế nó không được phép để
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
36 tham chiếu đến
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38

Mệnh đề tùy chọn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38 có dạng chung

WHERE condition

trong đó

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
41 là bất kỳ biểu thức nào đánh giá kết quả của loại
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11. Bất kỳ hàng nào không thỏa mãn điều kiện này sẽ bị loại khỏi đầu ra. Một hàng thỏa mãn điều kiện nếu nó trả về true khi các giá trị hàng thực tế được thay thế cho bất kỳ tham chiếu biến nào

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 Mệnh đề

Mệnh đề tùy chọn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 có dạng tổng quát

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 sẽ cô đọng thành một hàng duy nhất, tất cả các hàng đã chọn có chung giá trị cho các biểu thức được nhóm. Một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
46 được sử dụng bên trong một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
47 có thể là tên cột đầu vào, hoặc tên hoặc số thứ tự của cột đầu ra [mục danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1] hoặc một biểu thức tùy ý được hình thành từ các giá trị cột đầu vào. Trong trường hợp không rõ ràng, tên
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 sẽ được hiểu là tên cột đầu vào chứ không phải tên cột đầu ra

Nếu bất kỳ

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
50,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
51 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
52 nào xuất hiện dưới dạng các phần tử nhóm, thì toàn bộ mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 xác định một số lượng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
54 độc lập. Hiệu quả của điều này tương đương với việc xây dựng một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
19 giữa các truy vấn con với các tập hợp nhóm riêng lẻ làm mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 của chúng. Mệnh đề tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57 loại bỏ các bộ trùng lặp trước khi xử lý; . Để biết thêm chi tiết về cách xử lý các tập hợp nhóm, hãy xem Phần 7. 2. 4

Các hàm tổng hợp, nếu có được sử dụng, được tính toán trên tất cả các hàng tạo thành từng nhóm, tạo ra một giá trị riêng cho từng nhóm. [Nếu có các hàm tổng hợp nhưng không có mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43, thì truy vấn được coi là có một nhóm duy nhất bao gồm tất cả các hàng đã chọn. ] Tập hợp các hàng được cung cấp cho từng hàm tổng hợp có thể được lọc thêm bằng cách đính kèm mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
61 vào lệnh gọi hàm tổng hợp; . 2. 7 để biết thêm thông tin. Khi có mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
61, chỉ những hàng khớp với mệnh đề đó mới được đưa vào đầu vào của hàm tổng hợp đó

Khi có mặt

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 hoặc bất kỳ hàm tổng hợp nào có mặt, thì biểu thức danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 không hợp lệ để tham chiếu đến các cột chưa được nhóm ngoại trừ trong các hàm tổng hợp hoặc khi cột chưa được nhóm phụ thuộc chức năng vào các cột được nhóm, vì nếu không thì sẽ có nhiều hơn . Một phụ thuộc hàm tồn tại nếu các cột được nhóm [hoặc một tập hợp con của chúng] là khóa chính của bảng chứa cột chưa được nhóm

Hãy nhớ rằng tất cả các hàm tổng hợp được đánh giá trước khi đánh giá bất kỳ biểu thức "vô hướng" nào trong mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 hoặc danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1. Điều này có nghĩa là, ví dụ, một biểu thức
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
67 không thể được sử dụng để bỏ qua việc đánh giá một hàm tổng hợp; . 2. 14

Hiện tại, không thể chỉ định

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71 với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65

Mệnh đề tùy chọn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 có dạng tổng quát

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1

trong đó

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
41 giống như được chỉ định cho mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 loại bỏ các hàng nhóm không thỏa mãn điều kiện.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 khác với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38 lọc các hàng riêng lẻ trước khi áp dụng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43, trong khi
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 lọc các hàng nhóm được tạo bởi
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43. Mỗi cột được tham chiếu trong
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
41 phải tham chiếu rõ ràng đến cột nhóm, trừ khi tham chiếu xuất hiện trong hàm tổng hợp hoặc cột chưa nhóm phụ thuộc chức năng vào cột nhóm

Sự hiện diện của

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 biến truy vấn thành truy vấn được nhóm ngay cả khi không có mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43. Điều này giống như những gì xảy ra khi truy vấn chứa các hàm tổng hợp nhưng không có mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43. Tất cả các hàng đã chọn được coi là tạo thành một nhóm duy nhất và danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 và mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 chỉ có thể tham chiếu các cột của bảng từ bên trong các hàm tổng hợp. Một truy vấn như vậy sẽ tạo ra một hàng nếu điều kiện
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65 là đúng, không có hàng nào nếu điều kiện đó không đúng

Hiện tại, không thể chỉ định

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71 với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96

Mệnh đề tùy chọn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96 có dạng tổng quát

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
0

trong đó

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
98 là tên có thể được tham chiếu từ mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
99 hoặc định nghĩa cửa sổ tiếp theo và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
100 là

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1

Nếu một

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
101 được chỉ định thì nó phải tham chiếu đến một mục trước đó trong danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96; . Trong trường hợp này, cửa sổ mới không thể chỉ định mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
103 của chính nó và nó chỉ có thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 nếu cửa sổ được sao chép không có mệnh đề. Cửa sổ mới luôn sử dụng mệnh đề khung riêng của nó;

Các phần tử của danh sách

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
103 được hiểu theo cách tương tự như các phần tử của mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43, ngoại trừ việc chúng luôn là các biểu thức đơn giản và không bao giờ là tên hoặc số của cột đầu ra. Một điểm khác biệt nữa là các biểu thức này có thể chứa các lệnh gọi hàm tổng hợp, không được phép trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 thông thường. Chúng được phép ở đây vì cửa sổ xảy ra sau khi nhóm và tổng hợp

Tương tự, các phần tử của danh sách

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 được diễn giải theo cách giống như các phần tử của mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 ở mức câu lệnh, ngoại trừ việc các biểu thức luôn được coi là các biểu thức đơn giản và không bao giờ là tên hoặc số của cột đầu ra

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
110 tùy chọn xác định khung cửa sổ cho các chức năng của cửa sổ phụ thuộc vào khung [không phải tất cả đều như vậy]. Khung cửa sổ là một tập hợp các hàng liên quan cho mỗi hàng của truy vấn [được gọi là hàng hiện tại].
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
110 có thể là một trong

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1

trong đó

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
112 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
113 có thể là một trong

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
0

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
114 có thể là một trong

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
3

Nếu bỏ qua

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
113, giá trị mặc định là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
116. Các hạn chế là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
112 không thể là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
118,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
113 không thể là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
120 và lựa chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
113 không thể xuất hiện sớm hơn trong danh sách các tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
112 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
113 ở trên so với lựa chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
112 — ví dụ:
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
125 PRECEDING không được phép

Tùy chọn tạo khung mặc định là

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
126, giống như
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
127; . Nói chung,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
120 có nghĩa là khung bắt đầu với hàng đầu tiên của phân vùng và tương tự như vậy,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
118 có nghĩa là khung kết thúc với hàng cuối cùng của phân vùng, bất kể chế độ
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
132,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
133 hay
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
134. Ở chế độ
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
133,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
116 có nghĩa là khung bắt đầu hoặc kết thúc với hàng hiện tại; . Các tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
141 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
143 có ý nghĩa khác nhau tùy thuộc vào chế độ khung hình. Trong chế độ
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
133,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140 là một số nguyên cho biết khung bắt đầu hoặc kết thúc nhiều hàng trước hoặc sau hàng hiện tại. Trong chế độ
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
134,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140 là một số nguyên cho biết khung bắt đầu hoặc kết thúc có nhiều nhóm ngang hàng trước hoặc sau nhóm ngang hàng của hàng hiện tại, trong đó nhóm ngang hàng là một nhóm các hàng tương đương theo mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 của cửa sổ. Ở chế độ
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
132, việc sử dụng tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140 yêu cầu phải có chính xác một cột
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 trong định nghĩa cửa sổ. Sau đó, khung chứa những hàng có giá trị cột sắp xếp không quá
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140 nhỏ hơn [đối với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
141] hoặc nhiều hơn [đối với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
143] giá trị cột sắp xếp của hàng hiện tại. Trong những trường hợp này, kiểu dữ liệu của biểu thức
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140 phụ thuộc vào kiểu dữ liệu của cột thứ tự. Đối với các cột sắp xếp theo số, nó thường cùng loại với cột sắp xếp, nhưng đối với các cột sắp xếp theo ngày giờ thì đó là một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
156. Trong tất cả các trường hợp này, giá trị của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140 phải khác rỗng và không âm. Ngoài ra, mặc dù
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
140 không nhất thiết phải là một hằng số đơn giản, nhưng nó không thể chứa các biến, hàm tổng hợp hoặc hàm cửa sổ

Tùy chọn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
114 cho phép loại trừ các hàng xung quanh hàng hiện tại khỏi khung, ngay cả khi chúng sẽ được đưa vào theo các tùy chọn bắt đầu khung và kết thúc khung.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
160 loại trừ hàng hiện tại khỏi khung.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
161 loại trừ hàng hiện tại và các hàng ngang theo thứ tự của nó khỏi khung.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
162 loại trừ bất kỳ hàng ngang hàng nào của hàng hiện tại khỏi khung, nhưng không phải chính hàng hiện tại.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
163 chỉ cần chỉ định rõ ràng hành vi mặc định là không loại trừ hàng hiện tại hoặc hàng ngang hàng của nó

Xin lưu ý rằng chế độ

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
133 có thể tạo ra kết quả không thể đoán trước nếu thứ tự
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 không sắp xếp các hàng một cách duy nhất. Các chế độ
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
132 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
134 được thiết kế để đảm bảo rằng các hàng ngang hàng trong thứ tự
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 được đối xử như nhau. tất cả các hàng của một nhóm ngang hàng nhất định sẽ nằm trong khung hoặc bị loại khỏi nó

Mục đích của mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96 là chỉ định hành vi của các chức năng cửa sổ xuất hiện trong danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 của truy vấn hoặc mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104. Các hàm này có thể tham chiếu các mục nhập mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96 theo tên trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
99 của chúng. Tuy nhiên, mục nhập mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96 không cần phải được tham chiếu ở bất kỳ đâu; . Có thể sử dụng các hàm cửa sổ mà không cần bất kỳ mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96 nào, vì lệnh gọi hàm cửa sổ có thể chỉ định trực tiếp định nghĩa cửa sổ của nó trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
99 của nó. Tuy nhiên, mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96 lưu cách nhập khi cần cùng một định nghĩa cửa sổ cho nhiều chức năng cửa sổ

Hiện tại, không thể chỉ định

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71 với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
96

Các chức năng của cửa sổ được mô tả chi tiết trong Phần 3. 5, Phần 4. 2. 8 và Mục 7. 2. 5

Danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1

Danh sách

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 [giữa các từ khóa
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32] chỉ định các biểu thức tạo thành các hàng đầu ra của câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1. Các biểu thức có thể [và thường làm] đề cập đến các cột được tính trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
32

Giống như trong một bảng, mọi cột đầu ra của

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 đều có tên. Trong một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 đơn giản, tên này chỉ được sử dụng để gắn nhãn cột để hiển thị, nhưng khi
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 là một truy vấn con của một truy vấn lớn hơn, tên này sẽ được truy vấn lớn hơn coi là tên cột của bảng ảo do truy vấn phụ tạo ra. . Để chỉ định tên sẽ sử dụng cho một cột đầu ra, hãy viết
WHERE condition
52
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
193 sau biểu thức của cột. [Bạn có thể bỏ qua
WHERE condition
52 nhưng chỉ khi tên đầu ra mong muốn không khớp với bất kỳ từ khóa PostgreSQL nào [xem Phụ lục C]. Để bảo vệ chống lại các từ khóa bổ sung có thể có trong tương lai, bạn nên luôn viết
WHERE condition
52 hoặc trích dẫn kép tên đầu ra. ] Nếu bạn không chỉ định tên cột, tên sẽ được PostgreSQL tự động chọn. Nếu biểu thức của cột là một tham chiếu cột đơn giản thì tên đã chọn giống với tên của cột đó. Trong các trường hợp phức tạp hơn, có thể sử dụng tên hàm hoặc tên loại hoặc hệ thống có thể sử dụng lại tên được tạo, chẳng hạn như
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
196

Tên của cột đầu ra có thể được sử dụng để chỉ giá trị của cột trong mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43, nhưng không phải trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
38 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
65;

Thay vì một biểu thức,

WHERE condition
03 có thể được viết trong danh sách đầu ra dưới dạng tốc ký cho tất cả các cột của các hàng đã chọn. Ngoài ra, bạn có thể viết
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
10 dưới dạng tốc ký cho các cột đến từ bảng đó. Trong những trường hợp này, không thể chỉ định tên mới với
WHERE condition
52;

Theo tiêu chuẩn SQL, các biểu thức trong danh sách đầu ra phải được tính toán trước khi áp dụng

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006. Điều này rõ ràng là cần thiết khi sử dụng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57, vì nếu không thì không rõ giá trị nào đang được phân biệt. Tuy nhiên, trong nhiều trường hợp sẽ thuận tiện nếu các biểu thức đầu ra được tính sau
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006; . Với hành vi đó, thứ tự đánh giá chức năng trực quan hơn và sẽ không có đánh giá tương ứng với các hàng không bao giờ xuất hiện trong đầu ra. PostgreSQL sẽ đánh giá hiệu quả các biểu thức đầu ra sau khi sắp xếp và giới hạn, miễn là các biểu thức đó không được tham chiếu trong
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43. [Là một phản ví dụ, rõ ràng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
013 phải đánh giá
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
014 trước khi sắp xếp. ] Các biểu thức đầu ra chứa hàm trả về tập hợp được đánh giá hiệu quả sau khi sắp xếp và trước khi giới hạn, do đó,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006 sẽ hành động để cắt đầu ra khỏi hàm trả về tập hợp

Ghi chú

Các phiên bản PostgreSQL trước 9. 6 không cung cấp bất kỳ đảm bảo nào về thời gian đánh giá các biểu thức đầu ra so với sắp xếp và giới hạn;

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57

Nếu

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
017 được chỉ định, tất cả các hàng trùng lặp sẽ bị xóa khỏi tập kết quả [một hàng được giữ lại từ mỗi nhóm trùng lặp].
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
018 chỉ định ngược lại. tất cả các hàng được giữ nguyên;

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
11 chỉ giữ hàng đầu tiên của mỗi tập hợp các hàng mà các biểu thức đã cho đánh giá bằng nhau. Các biểu thức
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
020 được giải thích bằng cách sử dụng các quy tắc tương tự như đối với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 [xem ở trên]. Lưu ý rằng "hàng đầu tiên" của mỗi bộ là không thể đoán trước trừ khi sử dụng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 để đảm bảo rằng hàng mong muốn xuất hiện đầu tiên. Ví dụ

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
3

lấy báo cáo thời tiết gần đây nhất cho từng địa điểm. Nhưng nếu chúng tôi không sử dụng

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 để buộc thứ tự giá trị thời gian giảm dần cho từng vị trí, thì chúng tôi đã nhận được báo cáo từ một thời điểm không thể đoán trước cho từng vị trí

Các biểu thức ________ 3020] phải khớp với [các] biểu thức ________ 1104 ngoài cùng bên trái. Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 thông thường sẽ chứa [các] biểu thức bổ sung xác định thứ tự ưu tiên mong muốn của các hàng trong mỗi nhóm
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
020

Hiện tại, không thể chỉ định

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71 với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 có dạng tổng quát này

WHERE condition
0

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
035 là bất kỳ câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 nào không có mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71. [
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006 có thể được gắn vào một biểu thức con nếu nó được đặt trong ngoặc đơn. Không có dấu ngoặc đơn, các mệnh đề này sẽ được áp dụng cho kết quả của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17, không phải cho biểu thức đầu vào bên phải của nó. ]

Toán tử

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 tính tập hợp của các hàng được trả về bởi các câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 có liên quan. Một hàng nằm trong tập kết hợp của hai tập kết quả nếu nó xuất hiện trong ít nhất một trong các tập kết quả. Hai câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 đại diện cho toán hạng trực tiếp của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 phải tạo ra cùng một số cột và các cột tương ứng phải có kiểu dữ liệu tương thích

Kết quả của

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 không chứa bất kỳ hàng trùng lặp nào trừ khi tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
051 được chỉ định.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
051 ngăn chặn việc loại bỏ các bản sao. [Do đó,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
19 thường nhanh hơn đáng kể so với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17; hãy sử dụng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
051 khi bạn có thể. ]
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57 có thể được viết để chỉ định rõ ràng hành vi mặc định loại bỏ các hàng trùng lặp

Nhiều toán tử

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 trong cùng một câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 được đánh giá từ trái sang phải, trừ khi có dấu ngoặc đơn chỉ định khác

Hiện tại, không thể chỉ định

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71 cho kết quả
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17 hoặc cho bất kỳ đầu vào nào của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065 có dạng chung này

WHERE condition
1

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
035 là bất kỳ câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 nào không có mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71

Toán tử

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065 tính giao điểm đã đặt của các hàng được trả về bởi các câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 có liên quan. Một hàng nằm trong giao điểm của hai tập hợp kết quả nếu nó xuất hiện trong cả hai tập hợp kết quả

Kết quả của

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065 không chứa bất kỳ hàng trùng lặp nào trừ khi tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
051 được chỉ định. Với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
051, một hàng có
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
080 trùng lặp ở bảng bên trái và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
081 trùng lặp ở bảng bên phải sẽ xuất hiện tối thiểu [
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
080,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
081] lần trong tập hợp kết quả.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57 có thể được viết để chỉ định rõ ràng hành vi mặc định loại bỏ các hàng trùng lặp

Nhiều toán tử

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065 trong cùng một câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 được đánh giá từ trái sang phải, trừ khi dấu ngoặc đơn quy định khác.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065 liên kết chặt chẽ hơn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17. Tức là,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
089 sẽ được đọc là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
090

Hiện tại, không thể chỉ định

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71 cho kết quả
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065 hoặc cho bất kỳ đầu vào nào của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097 có dạng chung này

WHERE condition
2

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
035 là bất kỳ câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 nào không có mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71

Toán tử

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097 tính toán tập hợp các hàng nằm trong kết quả của câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 bên trái nhưng không nằm trong kết quả của câu lệnh bên phải

Kết quả của

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097 không chứa bất kỳ hàng trùng lặp nào trừ khi tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
051 được chỉ định. Với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
051, một hàng có
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
080 trùng lặp ở bảng bên trái và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
081 trùng lặp ở bảng bên phải sẽ xuất hiện tối đa [
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
080-
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
081,0] lần trong tập kết quả.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
57 có thể được viết để chỉ định rõ ràng hành vi mặc định loại bỏ các hàng trùng lặp

Nhiều toán tử

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097 trong cùng một câu lệnh
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 được đánh giá từ trái sang phải, trừ khi dấu ngoặc đơn quy định khác.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097 liên kết ở cùng cấp độ với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17

Hiện tại, không thể chỉ định

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
68,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
69,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
70 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
71 cho kết quả
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097 hoặc cho bất kỳ đầu vào nào của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104

Mệnh đề tùy chọn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 có dạng chung này

WHERE condition
3

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 làm cho các hàng kết quả được sắp xếp theo [các] biểu thức đã chỉ định. Nếu hai hàng bằng nhau theo biểu thức ngoài cùng bên trái, chúng được so sánh theo biểu thức tiếp theo, v.v. Nếu chúng bằng nhau theo tất cả các biểu thức đã chỉ định, thì chúng được trả về theo thứ tự phụ thuộc vào việc triển khai

Mỗi

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
46 có thể là tên hoặc số thứ tự của một cột đầu ra [
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1 mục danh sách] hoặc nó có thể là một biểu thức tùy ý được hình thành từ các giá trị của cột đầu vào

Số thứ tự đề cập đến vị trí thứ tự [từ trái sang phải] của cột đầu ra. Tính năng này cho phép xác định thứ tự trên cơ sở cột không có tên duy nhất. Điều này không bao giờ thực sự cần thiết vì luôn có thể gán tên cho cột đầu ra bằng cách sử dụng mệnh đề

WHERE condition
52

Cũng có thể sử dụng các biểu thức tùy ý trong mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104, kể cả các cột không xuất hiện trong danh sách đầu ra của
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
1. Vì vậy, tuyên bố sau đây là hợp lệ

WHERE condition
4

Hạn chế của tính năng này là mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 áp dụng cho kết quả của mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097 chỉ có thể chỉ định tên hoặc số cột đầu ra, không phải biểu thức

Nếu một biểu thức

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 là một tên đơn giản khớp với cả tên cột đầu ra và tên cột đầu vào, thì
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 sẽ hiểu nó là tên cột đầu ra. Điều này trái ngược với lựa chọn mà
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
43 sẽ đưa ra trong tình huống tương tự. Sự không nhất quán này được tạo ra để tương thích với tiêu chuẩn SQL

Theo tùy chọn, người ta có thể thêm từ khóa

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
142 [tăng dần] hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
143 [giảm dần] sau bất kỳ biểu thức nào trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104. Nếu không được chỉ định,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
142 được giả định theo mặc định. Ngoài ra, một tên toán tử đặt hàng cụ thể có thể được chỉ định trong mệnh đề
WHERE condition
94. Toán tử sắp xếp phải là thành viên nhỏ hơn hoặc lớn hơn của một số họ toán tử B-tree.
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
142 thường tương đương với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
148 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
143 thường tương đương với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
150. [Nhưng người tạo kiểu dữ liệu do người dùng xác định có thể xác định chính xác thứ tự sắp xếp mặc định là gì và nó có thể tương ứng với các toán tử có tên khác. ]

Nếu

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
151 được chỉ định, các giá trị null sẽ sắp xếp sau tất cả các giá trị khác null; . Nếu không được chỉ định, hành vi mặc định là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
151 khi
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
142 được chỉ định hoặc ngụ ý và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
152 khi
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
143 được chỉ định [do đó, mặc định là hành động như thể số null lớn hơn số không null]. Khi
WHERE condition
94 được chỉ định, thứ tự null mặc định phụ thuộc vào việc toán tử là toán tử nhỏ hơn hay lớn hơn

Lưu ý rằng các tùy chọn sắp xếp chỉ áp dụng cho biểu thức mà chúng tuân theo;

Dữ liệu chuỗi ký tự được sắp xếp theo đối chiếu áp dụng cho cột được sắp xếp. Điều đó có thể được ghi đè khi cần bằng cách bao gồm một mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
160 trong
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
46, ví dụ như
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
162. Để biết thêm thông tin, hãy xem Phần 4. 2. 10 và Mục 24. 2

Điều khoản
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006

Mệnh đề

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006 bao gồm hai mệnh đề phụ độc lập

WHERE condition
5

Tham số

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
165 chỉ định số lượng hàng tối đa cần trả về, trong khi đó,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
166 chỉ định số lượng hàng cần bỏ qua trước khi bắt đầu trả về hàng. Khi cả hai được chỉ định, các hàng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
166 sẽ bị bỏ qua trước khi bắt đầu đếm các hàng
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
165 sẽ được trả về

Nếu biểu thức

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
165 đánh giá bằng NULL, thì nó được coi là
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
170, i. e. , không giới hạn. Nếu
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
166 đánh giá là NULL, thì nó được xử lý giống như
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
172

SQL. 2008 đã giới thiệu một cú pháp khác để đạt được kết quả tương tự, mà PostgreSQL cũng hỗ trợ. Nó là

WHERE condition
6

Trong cú pháp này, giá trị

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
166 hoặc
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
165 được yêu cầu theo tiêu chuẩn là một hằng số, một tham số hoặc một tên biến; . Nếu
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
165 bị bỏ qua trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
176, nó sẽ mặc định là 1. Tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
177 được sử dụng để trả về bất kỳ hàng bổ sung nào có vị trí cuối cùng trong tập kết quả theo mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104; .
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
181 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
133 cũng như
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
183 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
184 là những từ nhiễu không ảnh hưởng đến tác dụng của những mệnh đề này. Theo tiêu chuẩn, mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
185 phải đứng trước mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
176 nếu cả hai đều có mặt;

Khi sử dụng

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006, bạn nên sử dụng mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 ràng buộc các hàng kết quả theo một thứ tự duy nhất. Nếu không, bạn sẽ nhận được một tập hợp con không thể đoán trước của các hàng của truy vấn — bạn có thể yêu cầu các hàng từ thứ mười đến thứ hai mươi, nhưng từ thứ mười đến thứ hai mươi theo thứ tự nào?

Công cụ lập kế hoạch truy vấn sẽ tính đến

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006 khi tạo kế hoạch truy vấn, do đó, rất có thể bạn sẽ nhận được các kế hoạch khác nhau [tạo ra các thứ tự hàng khác nhau] tùy thuộc vào những gì bạn sử dụng cho
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
185. Do đó, việc sử dụng các giá trị
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006/
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
185 khác nhau để chọn các tập hợp con khác nhau của kết quả truy vấn sẽ cho kết quả không nhất quán trừ khi bạn thực thi một thứ tự kết quả có thể dự đoán được với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104. Đây không phải là một lỗi;

Thậm chí có thể thực hiện lặp đi lặp lại cùng một truy vấn

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006 để trả về các tập hợp con khác nhau của các hàng trong bảng, nếu không có một
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104 để thực thi lựa chọn tập hợp con xác định. Một lần nữa, đây không phải là lỗi;

GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
2 Lệnh

Lệnh

WHERE condition
7

tương đương với

WHERE condition
8

Nó có thể được sử dụng như một lệnh cấp cao nhất hoặc như một biến thể cú pháp tiết kiệm không gian trong các phần của truy vấn phức tạp. Chỉ có thể sử dụng các mệnh đề khóa

WHERE condition
9,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
17,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
065,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
097,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
104,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
006,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
185,
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
176 và
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
108 với
GROUP BY [ ALL | DISTINCT ] grouping_element [, ...]
2;

Chủ Đề