我想获取包含关联日期列的列的最小值和最大值。下面是一个简单的表格示例和所需的输出。
ID SCORE DATE
1 100 1-1-2018
2 99 2-1-2018
3 102 3-1-2018
4 99 4-1-2018
5 98 5-1-2018
6 102 6-1-2018
7 100 7-1-2018
输出应该是
MinValue MinDate MaxValue MaxDate
98 5-1-2018 102 6-1-2018
如果min或max值多次出现,则应返回最后一个日期。
通过使用内部连接,我可以在一个查询中为最小值或最大值获取适当的日期,但不能同时为这两个查询都获取。请参见下面的示例:
SELECT score as MinValue, date as MinDate
FROM table inner join (select min(score) from table ) x on table.score= x.score
ORDER BY date desc
LIMIT 1
这里有一个SqlFiddlehttp://sqlfiddle.com/#!9/f50ced/4
在一个查询中提取所有必需的值是否可能和有效?
最佳答案
这里有一种方法;不确定它是否是最快的。
在一个派生表中获取Max
和Min
值。
“self”将此表连接两次,以获取最小值和最大值的相应日期。
有趣的是,MaxValue
在mysql中是一个Reserved Keyword函数;因此必须使用反勾号(`)。
尝试:
SELECT MIN(t1.minValue) AS minValue,
MAX(t2.Date) AS minDate,
MAX(t1.`maxValue`) AS `maxValue`,
MAX(t3.Date) AS maxDate
FROM
(
SELECT MIN(score) AS minValue,
MAX(score) AS `maxValue`
FROM your_table
) AS t1
JOIN your_table AS t2 ON t2.score = t1.minValue
JOIN your_table AS t3 ON t3.score = t1.`maxValue`
关于mysql - 使用日期列获取最小值和最大值的最有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52644176/