MySQL SELECT之后的行具有不同的列值

安德鲁·舒尔金

我有这样的禁忌:

sn(char)   ts(int)     data(char) flag(tinyint)
'a'        1494825611  'a0'       1
'a'        1494825613  'a1'       0
'a'        1494825617  'a2'       0
'a'        1494825623  'a3'       1
'a'        1494825634  'a4'       1
'b'        1494825644  'b1'       1
'b'        1494825643  'b0'       0
'a'        1494825645  'a5'       1
'a'        1494825648  'a6'       0
'b'        1494825658  'b2'       1

行的顺序可能不正确(例如b1b0),因此应首先对它们进行排序ts

我正在尝试进行有效的查询,sn以获取当前和下一个flag不同的行。

结果,我想要给sn 'a'这样的东西

old_ts     ts         old_data data flag
1494825611 1494825613 'a0'     'a1' 0
1494825617 1494825623 'a2'     'a3' 1
1494825645 1494825648 'a5'     'a6' 0

对于sn 'b'

old_ts     ts         old_data data flag
1494825643 1494825644 'b0',    'b1' 1

创建其他列或表不是问题。

斯坦尼斯拉夫

您可以使用@rowFlag变量。每行检查是否等于flag。如果是,则将过滤器字段设置为0以稍后跳过

select old_ts, ts, old_data, data, new_flag as flag
from
    (select
      t.ts,
      t.data,
      case when @rowFlag=flag then 0 else 1 end as filter,
      flag as new_flag,
      @rowFlag:=flag as old_flag,
      @old as old_data,
      @old:=data,
      @old_ts as old_ts,
      @old_ts:=ts
    from  test t, (select @rowFlag:=-1, @old:=null, @old_ts:=null) as def
    where sn='a'
    order by ts) as sub
where filter=1 and old_ts is not null;

SQL小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PHP / MySQL排序时,SELECT结果中的某些行的特定列具有不同的值

MySQL 查询一列中具有相同值而另一列中具有不同值的行

具有相同值但在不同列中的Mysql行&在一行中显示它们

当列是特定值时,mysql选择具有不同过滤器的行

MySQL 选择查询:SUM() 行具有不同的值,来自另一列

MySQL错误:使用的SELECT语句具有不同数量的列

所使用的SELECT语句具有不同数量的列,mysql

MySQL选择具有特定值的不同的N行

MySQL选择具有匹配值的第一行之后的所有行

将具有相同ID但列值不同的两行合并为一行[mysql]

MySQL将行转换为具有varchar值的列

在MySQL的列中查找具有相同值的行

将具有重复值的行转换为列 - MySQL

MySQL选择具有相同值列的行

MySql查询2列中具有相同值的行

MySQL选择行仅在列中具有指定的值

Mysql SELECT名称,其中具有该名称的所有行均具有某些值

MySQL-如何从一列中查询具有不同值的不同列

MySQL来自具有不同列数的不同表的值总和

MySQL在列A中找到所有具有相同值但在克隆B中具有不同值的元素

MySQL:将一组值与具有不同顺序的列值匹配

具有列值的MYSQL Update列

如何从A列中选择所有不同的值,这些值在mySQL中的B列中具有确定的值

MySQL选择具有相同值的行

如何解决MySQL错误“使用的SELECT语句具有不同数量的列”

MySQL-选择具有相同值的多行,其中一行必须不同

MYSQL GROUP BY对具有特定列的值

MySQL SUM IF列具有特定值

具有多个值的MySQL列