SQL:选择所有记录匹配值'x',但在出现值'y'时停止

时间:2012-05-12 13:13:37

标签: mysql sql

我的表中有一列包含0或1的值。 现在我想选择1的最后一个周期的开始。

想象一下,我的下一个表有2列。 1的最后一个时期是ID 4和3。 这段时间的开始是ID = 3.

ID - VALUE

  • 5 - 0
  • 4 - 1< - last period
  • 3 - 1< - last period
  • 2 - 0
  • 1 - 1< - period more ago
  • 0 - 0

但是如何使用一个查询(可能还有一些PHP)选择此记录并且不选择所有记录?

修改

使用MySQL

2 个答案:

答案 0 :(得分:1)

您可以尝试找到值为1的最高ID,其中最接近的较低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

答案 1 :(得分:0)

在mysql中:

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

在你的php中,你用数字'3'代替你开始使用的数字。

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