我在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。
答案 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