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

时间:2015-06-26 10:46:44

标签: mysql sql database

我在mysql数据库中有一个表program_data。

  _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; 

但在这种情况下,获取最后3行,但我只想要一行,其第三个值从底部开始为1。

2 个答案:

答案 0 :(得分:3)

如果您从“底部”开始第三个1,假设_id确定了排序:

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

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

答案 1 :(得分:1)

您可以使用此查询执行此操作。这是SQLFIDDLE Third value

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