Câu hỏi của bạn đặc biệt liên quan đến hai cột, nhưng tôi đã gặp phải những tình huống mà tôi cần GREATEST / LEAST trong số hơn hai cột. Trong những trường hợp đó, bạn có thể sử dụng COALESCE và mở rộng giải pháp lên bao nhiêu cột bạn muốn.
Đây là một ví dụ với ba cột a , b và c :
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Lưu ý rằng thứ tự cột của COALESCE thay đổi để mỗi cột đầu vào là phần tử đầu tiên COALESCE ít nhất một lần. Lần duy nhất điều này sẽ trả về NULL là khi tất cả các cột đầu vào là NULL.
Trong "giải pháp chung", số COALESCE các câu lệnh sẽ bằng số cột đầu vào:
GREATEST(
COALESCE(col1, col2, col3, col4, ....),
COALESCE(col2, col3, col4, ...., col1),
COALESCE(col3, col4, ...., col1, col2),
COALESCE(col4, ...., col1, col2, col3),
COALESCE(...., col1, col2, col3, col4),
...
)