Mysql 如何判断';州';=1.
我需要SQL查询方面的帮助 我有一个带有“state”列的表。0表示关闭,1表示打开 不同的用户希望在连续发生x个1事件后得到通知Mysql 如何判断';州';=1.,mysql,sql,Mysql,Sql,我需要SQL查询方面的帮助 我有一个带有“state”列的表。0表示关闭,1表示打开 不同的用户希望在连续发生x个1事件后得到通知 使用SQL查询,如何判断“state”的最后x行是否等于1?例如,如果要检查最后5个连续行的state是否等于1,则您可能可以执行以下操作: SELECT IF(SUM(x.state) = 5, 1, 0) AS is_consecutive FROM ( SELECT state FROM table WHERE Processor
使用SQL查询,如何判断“state”的最后x行是否等于1?例如,如果要检查最后5个连续行的state是否等于1,则您可能可以执行以下操作:
SELECT IF(SUM(x.state) = 5, 1, 0) AS is_consecutive
FROM (
SELECT state
FROM table
WHERE Processor = 3
ORDER BY Status_datetime DESC
LIMIT 5
) as x
如果是连续的=1
,则是的,状态=1的最后连续行有5行
编辑:根据注释中的建议,您必须在查询中使用orderby
,以获取最后第n行
为了更准确,因为您有一个timestamp列,所以应该使用Status\u datetime
对行进行排序。您应该能够使用类似的方法(将HAVING
中的数字替换为要检查的x
值):
欢迎来到StackOverflow。请定义“连续”和“最后”?SQL数据库无法知道哪一列是“最后一列”,除非您有一列可以排序,但除了一列之外,您没有提供任何关于数据的信息。是否有一列指示日期或其他方式来排序数据,以便能够判断什么是“连续的”?如果您提供足够的数据信息来描述您试图匹配的条件,则会有所帮助。:-)谢谢,这方面我还不太熟悉。该表有:ID unique,autonumber Processor foreign key Status\u datetime timestamp state 0或1,假设Processor=3。我需要知道Processor=3的最后一个x记录的状态是1。你说得对,我已经编辑了我的答案。我刚刚试着运行这个查询,它的效果非常好。谢谢!我理解和(x.state)=5,但我不理解后面的',1,0'。你能帮我理解吗?不客气您是否知道可以将此答案标记为“已接受”(通过单击左侧的绿色复选框),以便将其标记为已解决?
SELECT Processor, OpenCount FROM
(
SELECT TOP 10 Processor, DateTime, Sum(Status) AS OpenCount
FROM YourTable
WHERE Processor = 3
ORDER BY DateTime DESC
) HAVING OpenCount >= 10