2014-02-19 6 views
0

Вот набор данных, которые у меня есть:MySQL значение перезаписи значения из другого поля

user_id  sum_min   sum_max 
---------- --------------- ----------------- 
    38  300000.00   300000.00 
    38  320000.00   320000.00 
    38  340000.00   340000.00 
    38  350000.00   350000.00 
    38  380000.00   380000.00 
    38  380000.00   380000.00 
    38  400000.00   400000.00 
    38  420000.00   420000.00 
    38  450000.00   450000.00 
    38  450000.00   450000.00 
    38  480000.00   480000.00 
    38  480000.00   480000.00 
    38  500000.00   500000.00 
    38  520000.00   520000.00 

Что мне нужно сделать, это установить диапазон как значение для sum_max этого значения sum_min из следующей записи. Ожидаемый результат должен быть:

user_id  sum_min   sum_max 
---------- --------------- ----------------- 
    38  300000.00   320000.00 
    38  320000.00   340000.00 
    38  340000.00   350000.00 
    38  350000.00   380000.00 
    38  380000.00   380000.00 
    38  380000.00   380000.00 

Любые идеи?

Спасибо.

+2

как насчет фактической информации, которая может позволить кому-то, чтобы ответить на ваш вопрос? По крайней мере дизайн схемы и желаемый выход являются обязательными. Было бы также полезно узнать, что вы уже пробовали. Вы можете точно знать, что вы просите, но если вы не объясните это, никто не будет – Steve

+1

Вопрос не ясен! Пожалуйста, уточните ожидаемый результат –

+0

. Ваш ожидаемый результат будет таким же, как и ваша таблица, за исключением нескольких строк. Как бы понять, как вы получили эти строки без каких-либо условий, так как ваш user_id тоже одинаковый. –

ответ

1

Рассмотрим следующее ...

DROP TABLE IF EXISTS my_table; 

CREATE TABLE my_table 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,user_id  INT NOT NULL 
,sum_min  INT NOT NULL 
); 

INSERT INTO my_table (user_id,sum_min) VALUES 
( 38 , 30), 
( 38 , 32), 
(38  ,34), 
(38  ,35), 
(38  ,38), 
(38  ,38), 
(38  ,40), 
(38  ,42), 
(38  ,45), 
(38  ,45), 
(38  ,48), 
(38  ,48), 
(38  ,50), 
(38  ,52); 

SELECT x.user_id 
    , x.sum_min 
    , MIN(y.sum_min) sum_max 
    FROM my_table x 
    JOIN my_table y 
    ON y.user_id = x.user_id 
    AND y.sum_min > x.sum_min 
GROUP 
    BY user_id 
    , sum_min; 

+---------+---------+---------+ 
| user_id | sum_min | sum_max | 
+---------+---------+---------+ 
|  38 |  30 |  32 | 
|  38 |  32 |  34 | 
|  38 |  34 |  35 | 
|  38 |  35 |  38 | 
|  38 |  38 |  40 | 
|  38 |  40 |  42 | 
|  38 |  42 |  45 | 
|  38 |  45 |  48 | 
|  38 |  48 |  50 | 
|  38 |  50 |  52 | 
+---------+---------+---------+ 
Смежные вопросы