如何获得每组的第二个记录?

时间:2017-11-21 12:08:11

标签: mysql

我有一个名为 DemoTable 的表包含一些字段,如 com_name updated_date demo_var ,我查询了它喜欢

select * from DemoTable where demo_var=100;

所以例如这里我有1000条记录。在此1000条记录中,我想根据 updated_date

查询以获取 com_name 的最新更新行

我的表格似乎是

id   demo_var   com_name   updated_date

1     100         XYZ         2017-11-10

2     100         XYZ         2017-11-09

3     100         ABC         2017-10-10

4     100         ABC         2017-10-11

5     150         AJD          2017-11-11

首先,我想知道demo_var = 100的位置,并获取更新后的最后一个com_name。

例如

2     100         XYZ         2017-11-09

3     100         ABC         2017-10-10

我希望获取这两个记录。

2 个答案:

答案 0 :(得分:1)

要实现每组第二个最新行,您可以使用以下查询

select a.*
from demo a
where  a.demo_var = 100
and (
    select count(*) 
    from demo b
    where b.demo_var = 100
    and a.com_name = b.com_name
    and case when a.updated_date = b.updated_date
        then a.id > b.id 
        else a.updated_date < b.updated_date
        end
) = 1 /* here 1 is for second last , 0 for latest and so on */
  

注意它按updated_date比较行,所以如果有相同的updated_date和com_name有2行,那么我已经使用id列来选择第二个最后一行,并假设id列默认设置为自动增量< / p>

Demo

答案 1 :(得分:0)

以下查询将起作用:

class Parent extends React.Component {
  constructor() {
    super()

    this.clickBox = this.clickBox.bind(this)
  }

  clickBox() {
    ...
  }

  render() {
    return (
      <div>
        <Child onClick={this.clickBox}
      </div>
    )
  }
}