147

是否有可能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

4 回答 4

279

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

于 2013-10-18T09:16:15.340 回答
27

I suppose you are looking for:

GREATEST()

and

LEAST()

于 2013-10-18T09:17:03.163 回答
13

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

SELECT LEAST(NULL,NOW());

SELECT GREATEST(NULL,NOW());

两者都返回 null,这可能不是您想要的(尤其是在 GREATEST 的情况下)

于 2018-05-03T22:23:04.913 回答
2

尝试这个:

SELECT GREATEST(A.date0, B.date0) AS `date0`,LEAST(A.date0, B.date0) AS `date1`
  FROM A 
  JOIN  B
    ON A.id = B.role;
于 2013-10-18T09:34:21.790 回答