当前位置: 首页 > 面试题库 >

当列值更改时MySQL选择行

祝宏放
2023-03-14
问题内容

我需要帮助或想法如何编写它,一个mysql语句。当特定列的值更改时,我需要选择一行。此后具有相同值的行不应选择。例如,我们有一个像这样的表,用以下值填充:

ID status_1 status_2 status_3 timestamp
1    0        0          0     2016-01-01 00:00:00
2    0        0          1     2016-01-01 01:00:00
3    0        1          0     2016-01-01 02:00:00
4    0        1          1     2016-01-01 03:00:00
5    1        0          0     2016-01-01 04:00:00
6    1        0          1     2016-01-01 05:00:00
7    1        1          0     2016-01-01 06:00:00
8    1        1          1     2016-01-01 07:00:00

如果我想在status_1更改时选择行,则查询应选择ID为1和5的行,如果我正在使用status_2的ID为:1、3、5、7的行,并且如果我使用status_3的所有ID,则为ID
。希望有人可以在过去的所有时间里为我提供帮助。

提前致谢


问题答案:

MySQL user defined variables 在这种情况下会为您提供帮助。

每次看到新状态时,将1行号分配给相应的行。

并且,如果您看到的状态与上一行相同,请分配一个递增的行号。

这样,您最终可以过滤row number = 1仅包含的记录。这些特定记录实际上与其前一行相比显示出差异

SELECT 
*
FROM 
(
 SELECT 
  *,
  IF(@prevStatus = YT.status_1, @rn := @rn + 1,
    IF(@prevStatus := YT.status_1, @rn := 1, @rn := 1)
  ) AS rn
 FROM your_table YT
 CROSS JOIN 
 (
  SELECT @prevStatus := -1, @rn := 1
 ) AS var 
 ORDER BY YT.ID
) AS t
WHERE t.rn = 1
ORDER BY t.ID


 类似资料:
  • 问题内容: 说我们有一张桌子: 填充一些行: 我想确定何时更改了值。所以我的查询结果应该是: 我有一个连接和子查询的解决方案: 但这是非常低效的,并且对于具有许多行的表将非常慢地工作。 我相信使用PostgreSQL窗口函数可能会有更有效的解决方案? SQL小提琴 问题答案: 这就是我如何通过分析来做到这一点: 更新(一些解释): 分析功能充当后处理步骤。查询结果分为多个分组(),并且在分组的上下

  • 问题内容: 我正在尝试在2列之间选择一个值。这是我的数据集 我的目标是(如果我的值为2)是选择 ID为1 (在from和to之间)的行。所以这是我正在使用的查询: 这是MySQL执行此查询时返回的结果: 我正在寻找的结果如下: 我尝试使用<和>等。但是,我总是得到两个结果。任何帮助将非常感激。 问题答案: 所以,您不希望下限具有包容性,对吗?

  • 问题内容: 我想在数据库中选择不同的值。让我来看一个简单的例子。 表: 是的,假设我的SQL是。这些是我的结果: 但是,问题在于/ 重复的顺序不同。我不想选择这些,我希望这两列中都有不同的值,请帮忙! 问题答案: 非常邪恶和邪恶:

  • 问题内容: 我在寻找一些指针。我有一个带有主题列表的选择列表。 以及另一个子主题列表: 当第一个列表值更改时,我希望能够刷新第二个选择列表。问题是我不知道该怎么做。我想使用AJAX,但是可以吗?我的任何建议(起点)将不胜感激。 问题答案: 您将需要创建一个控制器操作,该操作将从第一个列表中获取一个值,并为第二个列表提供一个选项列表。然后,您可以使用Java框架(例如JQuery)进行ajax调用:

  • 我有这个,它绑定了一个变更事件。在其内部值的中,我想在另一个选择列表中选择一个特定的元素,即其中的一个特定选项。 然而它并不起作用。在主服务中有一些服务,如果选择了子服务,就不需要子服务,因此应该选择默认的。 null null

  • 问题内容: 我在.html页面中有一个下拉列表, 落下: 当用户选择一个值时,我想执行一个动作。因此,在我的控制器中,我做到了: 控制器: 但是更改下拉列表中的值不会触发代码: 结果,我在select标记上尝试了另一个带有:的方法 和 功能: 但是会存储到子作用域中。我读到父级无法访问子级作用域。 当下拉列表中的选定值更改时,执行某项操作的正确/最佳方法是什么?如果是方法1,我的代码在做什么错?