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

时间:2013-10-18 09:12:52

标签: mysql sql

是否可以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实现这一目标吗?

4 个答案:

答案 0 :(得分:203)

您可以使用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

答案 1 :(得分:26)

我想你正在寻找:

GREATEST()

LEAST()

答案 2 :(得分:4)

请注意NULL是否可能在字段值中...

Page<PersonaSubset> findAll(Pageable pageable);

SELECT LEAST(NULL,NOW());

都返回null,这可能不是你想要的(特别是在GREATEST的情况下)

答案 3 :(得分:1)

试试这个:

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