2012-05-12 28 views
0

我的表中有一列包含值0或1。 现在我想选择最后一段的开始1分的。SQL:选择所有记录匹配值'x',但在出现值'y'时停止

想象一下,我有两列的下一张桌子。的1的最后一个周期是ID的4和3 这个时期的开始是ID = 3

ID - VALUE

  • 5 - 0
  • 4 - 1 < - 最后周期
  • 3 - 1 < - 最后周期
  • 2 - 0
  • 1 - 1 < - 段更长前
  • 0 - 0

但是,如何选择一条查询(也许有点PHP)并没有选择所有记录这个记录?

编辑:

使用MySQL

+0

什么是这些表之间的关系? –

+0

这只是一张桌子。 Id和VALUE是列。 – OrangeTux

+0

你想要所有的值为1的ID,对吗? –

回答

1

你可以尝试寻找最高的ID值为1,其最接近的低ID具有值0 在SQL这将是:

SELECT p1.id FROM periods p1 
WHERE p1.value = 1 
AND (SELECT p2.value FROM periods p2 
     WHERE p2.id<p1.id 
     ORDER BY p2.id DESC LIMIT 1) = 0 
ORDER BY p1.id DESC LIMIT 1 
0

在MySQL:

SELECT min(id) 
FROM table_name 
WHERE id > 3 AND value = 1 

在你的PHP你会代替数 '3' 这是你的价值数从...开始。

我相信这是答案,但我可能不完全理解你的问题。

相关问题