Thoạt nhìn, MySQL MAX()
và GREATEST()
các chức năng thực hiện một hoạt động tương tự. Cả hai đều trả về giá trị lớn nhất từ một dải giá trị. Tuy nhiên, có sự khác biệt giữa hai chức năng này.
Cách tốt nhất để thấy sự khác biệt giữa hai hàm này là so sánh cú pháp của chúng.
Cú pháp
Cú pháp cho mỗi hàm như sau:
MAX([DISTINCT] expr) [over_clause] GREATEST(value1,value2,...)
Vì vậy, họ đã trông hoàn toàn khác nhau. MAX()
hàm chấp nhận DISTINCT
từ khóa cũng như OVER
mệnh đề (và GREATEST()
chức năng không).
Tuy nhiên, sự khác biệt chính giữa hai hàm này là ở / s đối số được chấp nhận. Cụ thể:
-
MAX()
chấp nhận một đối số -
GREATEST()
chấp nhận nhiều đối số
Vì vậy, MAX()
thường được sử dụng để trả về giá trị lớn nhất trong một cột trong cơ sở dữ liệu. Bảng có thể chứa nhiều hàng, nhưng hàm này trả về hàng có giá trị lớn nhất.
GREATEST()
mặt khác, trả về đối số có giá trị lớn nhất từ danh sách các đối số được truyền cho nó. Vì vậy, bạn có thể truyền say, 3 đối số cho hàm này và nó sẽ trả về một đối số có giá trị lớn nhất.
Ví dụ 1 - Hàm MAX ()
Dưới đây là một ví dụ để chứng minh MAX()
chức năng.
SELECT MAX(Population) AS 'Result' FROM City;
Kết quả:
+----------+ | Result | +----------+ | 10500000 | +----------+
Ví dụ này tìm thành phố có dân số đông nhất từ City
bàn. Cột chứa dân số cho mỗi thành phố được gọi là Population
.
Điểm chính về ví dụ này là chỉ một đối số được cung cấp cho hàm, nhưng nhiều hàng đã được truy vấn.
Nếu bạn cố gắng chuyển nhiều đối số cho MAX()
bạn sẽ gặp lỗi.
Ví dụ 2 - Hàm GREATEST ()
Dưới đây là một ví dụ để chứng minh GREATEST()
chức năng.
SELECT GREATEST(1, 5, 9) AS 'Result';
Kết quả:
+--------+ | Result | +--------+ | 9 | +--------+
Vì vậy, trong trường hợp này, chúng tôi cung cấp ba đối số. Mỗi đối số được so sánh với đối số khác. Điều này trái ngược với đối số duy nhất được cung cấp cho MAX()
chức năng.
Nếu bạn cố gắng chuyển một đối số cho GREATEST()
bạn sẽ gặp lỗi.