作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张 table
fruit ex.Date price
banana 01/08/2016 57
banana 05/08/2016 60
banana 12/07/2016 90
grape 03/08/2016 40
grape 06/08/2016 20
grape 08/07/2016 10
apple 25/07/2016 80
apple 18/06/2016 20
现在我需要 mytable 中的两个表第一张表(基于每个水果组的最小日期)
fruit ex.Date price
banana 12/07/2016 90
grape 08/07/2016 10
apple 18/06/2016 80
然后是第二张表(基于每组的下一个日期)
fruit ex.Date price
banana 01/08/2016 57
grape 03/08/2016 40
apple 25/07/2016 80
最佳答案
为了得到每组的最少行数:
SELECT
myTable.*
FROM myTable
INNER JOIN
(
SELECT
fruit,
MIN(`ex.Date`) min_date
FROM myTable
GROUP BY fruit
) AS t
ON myTable.fruit = t.fruit AND myTable.`ex.Date` = t.`ex.Date`
为了获得每个组的第二个最小行数:
SELECT
myTable.*
FROM myTable
INNER JOIN
(
SELECT
S.fruit,
MIN(S.`ex.Date`) min_date
FROM myTable S
WHERE `ex.Date` > (SELECT MIN(T.`ex.Date`) FROM myTable T WHERE S.fruit = T.fruit)
GROUP BY S.fruit
) AS t
ON myTable.fruit = t.fruit AND myTable.`ex.Date` = t.`ex.Date`;
编辑:
要推广获取第 n 个最小值 行的解决方案:
SELECT
*
FROM
(
SELECT
*,
IF(fruit = @sameFruit, @fruitRank := @fruitRank + 1,
IF(@sameFruit := fruit, @fruitRank := 1,@fruitRank := 1)
) AS fruitRankNumber
FROM myTable
CROSS JOIN (SELECT @sameFruit := '', @fruitRank := 1 ) var
ORDER BY fruit, `ex.Date`
) AS rankedFruitTable
WHERE rankedFruitTable.fruitRankNumber = X
注意:将 X
替换为您的期望值。如果您想获得具有最小 ex.Date
的行,则将 X
替换为 1
。要获得每个水果的第二个最小行,请将 X
替换为 2
等等。
关于mysql - 如何获得每个组的最小行和第二最小行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934132/
我是一名优秀的程序员,十分优秀!