Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何判断';州';=1._Mysql_Sql - Fatal编程技术网

Mysql 如何判断';州';=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”列的表。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 = 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