首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从fld_Date的引用字段中获取下一个日期字段?

如何从fld_Date的引用字段中获取下一个日期字段?
EN

Stack Overflow用户
提问于 2013-07-03 13:13:56
回答 1查看 67关注 0票数 0

这是我的问题。

代码语言:javascript
复制
+----+--------+---------+---+------------+------------+
| 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 | 2013-07-01 |
| 19 |      1 | Marlon  | 6 | 2013-07-01 | 2013-07-07 |
| 20 |      1 | Marlon  | 7 | 2013-07-07 | 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          |
| 13 |      3 | Jenny   | 1 | 2013-06-14 | 2013-06-15 |
| 11 |      3 | Jenny   | 2 | 2013-06-15 | 2013-06-19 |
| 12 |      3 | Jenny   | 3 | 2013-06-19 | 2013-06-21 |
| 14 |      3 | Jenny   | 4 | 2013-06-21 | 0          |
| 15 |      4 | Rhea    | 1 | 2013-06-21 | 2013-06-22 |
| 16 |      4 | Rhea    | 2 | 2013-06-22 | 2013-06-23 |
| 17 |      4 | Rhea    | 3 | 2013-06-23 | 2013-06-24 |
| 18 |      4 | Rhea    | 4 | 2013-06-24 | 0          |
| 22 |      5 | Chrisha | 1 | 2013-07-07 | 2013-09-07 | <
| 23 |      5 | Chrisha | 2 | 2013-07-08 | 2013-09-07 | <
| 24 |      5 | Chrisha | 3 | 2013-07-11 | 2013-09-07 | <
| 25 |      5 | Chrisha | 4 | 2013-07-16 | 2013-09-07 | <
| 26 |      5 | Chrisha | 5 | 2013-07-17 | 2013-09-07 | <
| 27 |      5 | Chrisha | 6 | 2013-07-22 | 2013-09-07 |
| 21 |      5 | Chrisha | 7 | 2013-09-07 | 0          |
+----+--------+---------+---+------------+------------+

这是我想要的输出...(与上面用<标记的区别)

代码语言:javascript
复制
+----+--------+---------+---+------------+------------+
| 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 | 2013-07-01 |
| 19 |      1 | Marlon  | 6 | 2013-07-01 | 2013-07-07 |
| 20 |      1 | Marlon  | 7 | 2013-07-07 | 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          |
| 13 |      3 | Jenny   | 1 | 2013-06-14 | 2013-06-15 |
| 11 |      3 | Jenny   | 2 | 2013-06-15 | 2013-06-19 |
| 12 |      3 | Jenny   | 3 | 2013-06-19 | 2013-06-21 |
| 14 |      3 | Jenny   | 4 | 2013-06-21 | 0          |
| 15 |      4 | Rhea    | 1 | 2013-06-21 | 2013-06-22 |
| 16 |      4 | Rhea    | 2 | 2013-06-22 | 2013-06-23 |
| 17 |      4 | Rhea    | 3 | 2013-06-23 | 2013-06-24 |
| 18 |      4 | Rhea    | 4 | 2013-06-24 | 0          |
| 22 |      5 | Chrisha | 1 | 2013-07-07 | 2013-07-08 | <
| 23 |      5 | Chrisha | 2 | 2013-07-08 | 2013-07-11 | <
| 24 |      5 | Chrisha | 3 | 2013-07-11 | 2013-07-16 | <
| 25 |      5 | Chrisha | 4 | 2013-07-16 | 2013-07-17 | <
| 26 |      5 | Chrisha | 5 | 2013-07-17 | 2013-07-22 | <
| 27 |      5 | Chrisha | 6 | 2013-07-22 | 2013-09-07 |
| 21 |      5 | Chrisha | 7 | 2013-09-07 | 0          |
+----+--------+---------+---+------------+------------+

我的问题是,每次我向fld_Date插入从下一行提前的日期时,next_date行都会受到将提前日期复制到下一行日期的影响……有没有解决这个问题的办法...

以下是我的sql代码,它们正在尝试修复...

代码语言:javascript
复制
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
 ORDER BY
idName,
a.fld_Date
EN

回答 1

Stack Overflow用户

发布于 2013-07-03 13:38:41

试试这个:

代码语言:javascript
复制
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 (SELECT * FROM x_table ORDER BY idName, fld_Date) a 
        LEFT JOIN (SELECT * FROM x_table ORDER BY idName, fld_Date) b ON a.idname = b.idname AND a.fld_Date < b.fld_Date
        GROUP BY a.id ORDER BY idName, fld_Date) A, (SELECT @id:=0, @idname:=0) B
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17440154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档