Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на увеличение значения каждом новом поле на 1 от предыдущего / 8 сообщений из 8, страница 1 из 1
25.08.2015, 13:31:19
    #39035593
rudoy24
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
Всем доброго времени суток. У меня имеется таблица пользователей с полями:
Код: sql
1.
2.
3.
4.
5.
   id           
+-------------+
   koll
+-------------+
   filter



Мне нужно в кажое новое поле "koll" записать значение "000001" увеличенное на 1 от предыдущего поля кроме "filter=45, 67 или 84". Тоесть должна получится следующая структура:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
id   |  koll    |  filter
--------------------------
1    |  000001  |  20
2    |  000002  |  20
3    |  000003  |  20
4    |пропустить|  45
5    |пропустить|  67
6    |  000004  |  20
7    |  000005  |  20
8    |пропустить|  84
9    |  000006  |  20
10   |  000007  |  20



Буду благодарен, если кто-нибудь подскажет, в какую сторону смотреть или приведет пример sql запроса для заданной таблицы.
...
Рейтинг: 0 / 0
25.08.2015, 13:36:48
    #39035599
rudoy24
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
В конечном счет должна получится такая таблица, более детально:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
id   |  koll    |  filter
--------------------------
1    |  000001  |  20
2    |  000002  |  20
3    |  000003  |  20
4    |пропустить|  45
5    |пропустить|  67
6    |  000004  |  20
7    |  000005  |  20
8    |пропустить|  84
9    |  000006  |  20
10   |  000007  |  20
...  |  ...     |  ...
67   |  000053  |  20
...  |  ...     |  ...
344  |  000278  |  20
...
Рейтинг: 0 / 0
25.08.2015, 13:53:05
    #39035620
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
...
Рейтинг: 0 / 0
25.08.2015, 14:06:14
    #39035637
rudoy24
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
Вот так=ой запрос делает то что нужно:
Код: sql
1.
2.
3.
set @n=0;
update t1 set koll=@n:=@n+1 where filter not in (45,67,84);
select * from t1



НО но поле "koll" получается со значениями "1,2,3, ..." а нужно чтобы были значения "000001, 000002, 000003, ..."
...
Рейтинг: 0 / 0
25.08.2015, 14:10:28
    #39035639
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
UPDATE t1 SET `koll` = `koll`+1 WHERE where filter not in (45,67,84);
...
Рейтинг: 0 / 0
25.08.2015, 14:57:18
    #39035696
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
rudoy24Вот так=ой запрос делает то что нужноЭто случайность. Чтобы это стало закономерностью - в запрос необходимо добавить ORDER BY.
rudoy24поле "koll" получается со значениями "1,2,3, ..." а нужно чтобы были значения "000001, 000002, 000003, ..."БД хранит значения. А формированием нужного отображения значений должна заниматься клиентская часть.
...
Рейтинг: 0 / 0
25.08.2015, 23:33:07
    #39036008
rudoy24
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
Удалось добится поставленой задачи следующими запросами:
Код: sql
1.
2.
3.
4.
SET @n=1000000;
UPDATE t1 SET koll=@n:=@n+1 WHERE filter NOT IN (45,67,84);
UPDATE t1 SET koll = RIGHT(koll,LENGTH(koll)-1) where filter not in (45,67,84);
SELECT * FROM t1
...
Рейтинг: 0 / 0
26.08.2015, 08:42:52
    #39036080
lamer yuga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на увеличение значения каждом новом поле на 1 от предыдущего
Гораздо интереснее другой вариант :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create table test(
  id int auto_increment primary key,
  koll varchar(100),
  filter int
  );
insert test(filter) values
  (20), (20), (43), (20), (68);

update test t
join (
  select e.id, if(e.filter=20,
    insert(1000000+(@n:=@n+1),1,1,''),
    'пропустить')k
  from test e, (select @n:=0)v
  order by e.id desc
  )e on e.id=t.id
set t.koll=e.k 
;       
select * from test;

idkollfilter1000003202000002203пропустить434000001205пропустить68
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на увеличение значения каждом новом поле на 1 от предыдущего / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]