如何获取mysql中的选择行?

时间:2011-05-23 11:25:44

标签: mysql

我从2,3,5,8这样的随机数中增加了值,然后又从4,5,6,7之类的某个数字开始,然后从1,2,3,4,6

等数字开始

所以我在这个安排中有数据2,3,5,8,4,5,6,7,1,2,3,4,6 (single column)

现在,我想要的是,我想在每个序列中获得最高价值。在给定的数据中,我想要第一个数据项的值为8,第二个数据为7,第三个数据为6。所以我在上面的数据中需要三行。

我需要写什么样的查询?或者我需要一个光标?

1 个答案:

答案 0 :(得分:1)

我假设下面的表定义

CREATE TABLE sequence (
sequence_id INTEGER NOT NULL,
sequence_item INTEGER NOT NULL
);

使用此查询获取每个序列的最高值:

SELECT sequence_id, max(sequence_item)
FROM sequence
GROUP BY sequence_id

假设以下表格定义:

CREATE TABLE `sequence` (
  `t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `sequence_item` int(11) NOT NULL,
  PRIMARY KEY (`t`)
);

其中'sequence'我们假设每个连续的sequence_item行序列都是t顺序 - 如果你没有得到它,请参考下面的作者评论;)

您可以使用顺序获取最大数量(在SELECT中省略sid以获得最大数字):

set @sid = 1;
set @prev = (SELECT sequence_item-1 FROM sequence ORDER BY t LIMIT 1);

SELECT sid, MAX(sequence_item)
FROM (
SELECT
    @prev,
    IF(@prev != (sequence_item-1), (@sid:=@sid+1),@sid) as 'sid',
    sequence_item, t, @prev:=sequence_item
FROM sequence
ORDER BY t) as sitems
group by sid