mysql中如何限制变量的增量

2023-12-21

这是我的桌子......

+----+--------+---------+------------+
| id | idName | fldName | fld_Date   |
+----+--------+---------+------------+
|  1 |      1 | Marlon  | 2013-06-03 |
|  2 |      1 | Marlon  | 2013-06-05 |
|  3 |      1 | Marlon  | 2013-06-07 |
|  4 |      1 | Marlon  | 2013-06-08 |
|  5 |      1 | Marlon  | 2013-06-11 |
|  6 |      2 | Dawn    | 2013-06-03 |
|  7 |      2 | Dawn    | 2013-06-06 |
|  8 |      2 | Dawn    | 2013-06-08 |
|  9 |      2 | Dawn    | 2013-06-11 |
| 10 |      2 | Dawn    | 2013-06-15 |
| 11 |      3 | Jenny   | 2013-06-15 |
| 12 |      3 | Jenny   | 2013-06-19 |
| 13 |      3 | Jenny   | 2013-06-14 |
| 14 |      3 | Jenny   | 2013-06-21 |
+----+--------+---------+------------+

输出应该是这样的

+----+--------+---------+----+------------+------------+
| id | idName | fldName | i  | fld_Date   | next_date  |
+----+--------+---------+----+------------+------------+
|  1 |      1 | Marlon  |  1 | 2013-06-03 | 2013-06-05 |
|  2 |      1 | Marlon  |  2 | 2013-06-05 | 2013-06-07 |
|  3 |      1 | Marlon  |  3 | 2013-06-07 | 2013-06-08 |
|  4 |      1 | Marlon  |  4 | 2013-06-08 | 2013-06-11 |
|  5 |      1 | Marlon  |  5 | 2013-06-11 | 0          |
|  6 |      2 | Dawn    |  1 | 2013-06-03 | 2013-06-06 |
|  7 |      2 | Dawn    |  2 | 2013-06-06 | 2013-06-08 |
|  8 |      2 | Dawn    |  3 | 2013-06-08 | 2013-06-11 |
|  9 |      2 | Dawn    |  4 | 2013-06-11 | 2013-06-15 |
| 10 |      2 | Dawn    |  5 | 2013-06-15 | 0          |
| 11 |      3 | Jenny   |  1 | 2013-06-15 | 2013-06-19 |
| 12 |      3 | Jenny   |  2 | 2013-06-19 | 2013-06-14 |
| 13 |      3 | Jenny   |  3 | 2013-06-14 | 2013-06-21 |
| 14 |      3 | Jenny   |  4 | 2013-06-21 | 0          |
+----+--------+---------+----+------------+------------+

这是我的代码...

SELECT id,idName,fldName, @i := @i + 1 i, fld_Date, next_date 
FROM ( SELECT id,idName,fldName, @d next_date, @d := fld_Date fld_Date 
       FROM x_table, 
      (SELECT @d := 0) d ORDER BY id DESC) q, 
      (SELECT @i := 0) n ORDER BY id;

我很难根据不同的数量来限制增量idName... 你能帮我解决这些吗......


尝试这个:

SELECT id, idname, fldname, IF(@idname=(@idname:=idname), @id:=@id+1, @id:=1) i, fld_Date, next_Date
FROM (SELECT a.id, a.idName, a.fldName, a.fld_Date, IFNULL(b.fld_Date, 0) next_Date
        FROM x_table a 
        LEFT JOIN x_table b ON a.idname = b.idname AND a.fld_Date < b.fld_Date
        GROUP BY a.id) A, (SELECT @id:=0, @idname:=0) B

检查查询FIDDLE http://www.sqlfiddle.com/#!2/cd932/1

OUTPUT

| ID | IDNAME | FLDNAME | I |                    FLD_DATE |  NEXT_DATE |
------------------------------------------------------------------------
|  1 |      1 |  Marlon | 1 | June, 03 2013 00:00:00+0000 | 2013-06-05 |
|  2 |      1 |  Marlon | 2 | June, 05 2013 00:00:00+0000 | 2013-06-07 |
|  3 |      1 |  Marlon | 3 | June, 07 2013 00:00:00+0000 | 2013-06-08 |
|  4 |      1 |  Marlon | 4 | June, 08 2013 00:00:00+0000 | 2013-06-11 |
|  5 |      1 |  Marlon | 5 | June, 11 2013 00:00:00+0000 |          0 |
|  6 |      2 |    Dawn | 1 | June, 03 2013 00:00:00+0000 | 2013-06-06 |
|  7 |      2 |    Dawn | 2 | June, 06 2013 00:00:00+0000 | 2013-06-08 |
|  8 |      2 |    Dawn | 3 | June, 08 2013 00:00:00+0000 | 2013-06-11 |
|  9 |      2 |    Dawn | 4 | June, 11 2013 00:00:00+0000 | 2013-06-15 |
| 10 |      2 |    Dawn | 5 | June, 15 2013 00:00:00+0000 |          0 |
| 11 |      3 |   Jenny | 1 | June, 15 2013 00:00:00+0000 | 2013-06-19 |
| 12 |      3 |   Jenny | 2 | June, 19 2013 00:00:00+0000 | 2013-06-21 |
| 13 |      3 |   Jenny | 3 | June, 14 2013 00:00:00+0000 | 2013-06-15 |
| 14 |      3 |   Jenny | 4 | June, 21 2013 00:00:00+0000 |          0 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql中如何限制变量的增量 的相关文章

  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • Reporting Services 在哪里存储其日志文件

    最相关的谷歌结果似乎表明 为了访问日志 我们必须将您自己的日志表部署到数据库并制作报告服务写入它 http technet microsoft com en us library ms157403 aspx 简而言之 Reporting S
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • 如何在MYSQL中将整个字符串小写并保持第一个大写[重复]

    这个问题在这里已经有答案了 我的表栏目 我预期的输出会在列中发生变化 Smith Allen Doyle Dennis Baker Waker 这是我尝试过的 但不起作用 UPDATE TABLE employee SET last nam
  • 删除行导致锁超时

    当我尝试从表中删除行时 我不断收到这些错误 这里的特殊情况是我可能同时运行5个进程 该表本身是一个 Innodb 表 约有 450 万行 我的 WHERE 子句中使用的列没有索引 其他指数按预期运行 这是在事务中完成的 首先删除记录 然后插
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val
  • 是否可以引用同一个表中的不同列?

    如果博客有一个 类别 表 如下所示 CREATE TABLE categories id INTEGER PRIMARY KEY AUTO INCREMENT parent id INTEGER NOT NULL name VARCHAR

随机推荐