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

Car*_*los 113 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
Run Code Online (Sandbox Code Playgroud)

我可以通过只使用MySQL实现这一目标吗?

Elo*_*han 215

您可以使用LEASTGREATEST功能来实现它.

SELECT
    GREATEST(A.date0, B.date0) AS date0,
    LEAST(A.date1, B.date1) AS date1
FROM A, B
WHERE B.x = A.x
Run Code Online (Sandbox Code Playgroud)

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

  • 我很震惊,在从业 20 年后才知道“最小”和“伟大”:-O (2认同)

Ran*_*eed 27

我想你在寻找:

GREATEST()

LEAST()


Ste*_*lds 12

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

SELECT LEAST(NULL,NOW());
Run Code Online (Sandbox Code Playgroud)

SELECT GREATEST(NULL,NOW());
Run Code Online (Sandbox Code Playgroud)

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

  • 对于新手来说,可以用 IFNULL(<field>, <some-value>) 来解决 (2认同)