2009-10-14 41 views
216

tôi đã cố gắng nhưng thất bại:Cách lấy tối đa hai giá trị trong MySQL?

mysql> select max(1,0); 
 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to use 
near '0)' at line 1 

Trả lời

399

Sử dụng GREATEST()

Ví dụ:

SELECT GREATEST(2,1); 
+0

ví dụ: chọn lớn nhất (queue.count - 1, 0) từ hàng đợi; – Jahmic

+27

một điều cần lưu ý rằng bất cứ khi nào nếu bất kỳ giá trị đơn chứa null tại thời điểm đó chức năng này luôn trả về null là câu trả lời! – sanghavi7

+16

Ngoài ra còn có ['LEAST'] (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least) – bobobobo

18

Để có được giá trị lớn nhất của một cột trên một tập hợp của hàng:

SELECT MAX(column1) FROM table; -- expect one result 

Để có được giá trị tối đa của một tập hợp các cột, các chữ, hoặc các biến cho mỗi hàng:

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results 
4

Bạn có thể sử dụng chức năng GREATEST với các lĩnh vực không nullable. Nếu một trong các giá trị này (hoặc cả hai) có thể là NULL, không sử dụng nó (kết quả có thể là NULL).

select 
    if(
     fieldA is NULL, 
     if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */ 
     if(fieldB is NULL, field A, GREATEST(fieldA, fieldB)) 
    ) as maxValue 

Bạn có thể thay đổi NULL thành giá trị mặc định ưa thích của mình (nếu cả hai giá trị là NULL).

+0

Đây là lý do tại sao tôi thành thật ghét MySQL. Thật là một công việc to lớn để làm một điều đơn giản như vậy. –

Các vấn đề liên quan