MySQL 在两个(或更多)给定值中选择最小/最大值

SELECT在两个或两个以上值中的最小值或最大值是否可能。我需要这样的东西:

SELECT MAX_VALUE(A.date0, B.date0) AS date0, MIN_VALUE(A.date1, B.date1) AS date1
FROM A, B
WHERE B.x = A.x

我可以只使用 MySQL 来实现这一点吗?

93796 次浏览

您可以使用 LEASTGREATEST函数来实现它。

SELECT
GREATEST(A.date0, B.date0) AS date0,
LEAST(A.date1, B.date1) AS date1
FROM A, B
WHERE B.x = A.x

两者都在这里描述 http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

我想你是在寻找:

GREATEST()

还有

LEAST()

试试这个:

SELECT GREATEST(A.date0, B.date0) AS `date0`,LEAST(A.date0, B.date0) AS `date1`
FROM A
JOIN  B
ON A.id = B.role;

只要注意 NULL 是否可能位于字段值中..。

SELECT LEAST(NULL,NOW());

还有

SELECT GREATEST(NULL,NOW());

都返回 null,这可能不是您想要的结果(特别是 GREATEST)