如果存在重复数据,如何在mysql中选择特定的数据

如果存在重复数据,如何在mysql中选择特定的数据,mysql,sql,database,Mysql,Sql,Database,我在mysql数据库中有一个表程序 _id value 1 0 2 1 3 3 4 1 5 1 6 1 7 6 8 1 9 2 现在我想选择一行,它的值是1。但问题是,我想在值列中从底部选择第三个1 输出如下所示: _id = 5 value = 1 我编写了一个查询,如: SELECT distinct *

我在mysql数据库中有一个表程序

  _id     value
  1        0 
  2        1
  3        3
  4        1
  5        1
  6        1
  7        6
  8        1
  9        2
现在我想选择一行,它的值是1。但问题是,我想在值列中从底部选择第三个1

输出如下所示:

_id = 5  value = 1  
我编写了一个查询,如:

 SELECT distinct * FROM program_data  WHERE value= 1 ORDER BY value desc                
  limit  3; 

但在本例中,a获取最后3行,但我只需要一行,其第三个值是从底部算起的1

如果您要从“底部”取第三个1,则假定
\u id
确定顺序:

select d.*
from data d
where value = 1
order by _id desc
limit 2, 1;

这将在
limit
子句中使用偏移量。

您可以使用此查询进行此操作。这是小提琴

SELECT * 
FROM (
 SELECT _id,value
 FROM data
 where value = 1 
 ORDER BY _id ASC
 LIMIT 3
) AS tbl
ORDER BY _id DESC
LIMIT 1