2015-04-11 6 views
0

В моей базе данных есть десятки тысяч строк. Есть два столбца, квитанция и купон. Каждое значение «квитанции» охватывает 6 строк с одинаковым значением квитанции и другое значение «купон».SQL-запрос для обновления каждого альтернативного столбца

Ex Database-

receipt coupon 
500  1-mon 
500  2-mon 
500  3-mon 
500  4-mon 
500  5-mon 
500  6-mon 

501  1-mon 
501  2-mon 
501  3-mon 
501  4-mon 
501  5-mon 
501  6-mon 

502  1-mon 
502  2-mon 
502  3-mon 
502  4-mon 
502  5-mon 
502  6-mon 

Я пытаюсь сделать запрос на обновление, которое обновляет столбец купонного каждого первого экземпляра квитанции идентификатора, затем все вторые экземпляры отдельного получения, как мудрые, и т.д.

Я попытался следующий запрос, но это не обновляемых строк должным образом ...

update scheme_master set coupon = '3-month' where id % 6 = 1; 
+0

вы используете MySQL или SQL Server? Пожалуйста, отметьте свой вопрос соответствующим образом. –

+0

mysql xampp apache server –

+0

Что такое 'id'? Это левое число данных купонного поля? –

ответ

0

% синтаксис предполагает SQL Server, так что я думаю, что вы хотите что-то вроде этого:

with toupdate as (
     select sm.*, 
      row_number() over (partition by receipt order by id) as seqnum 
     from scheme_master sm 
    ) 
update toupdate 
    set coupon = cast(seqnum as varchar(255)) + '-month'; 

Однако, в вашем примере запроса, вы используете «3» и «1», что я не понимаю:

update scheme_master set coupon = '3-month' where id % 6 = 1; 
-----------------------------------^ ----------------------^ 

EDIT:

В MySQL, вы можете сделать:

update scheme_master 
    set coupon = concat((@rn := if(@r = receipt, @rn := @rn + 1, 
            if(@r := receipt, 1, 1) 
           ) 
         ), '-month') 
    order by receipt, id; 
+0

Версия сервера MySQL для правильного синтаксиса для использования рядом с 'toupdate as (выберите sm. *, Row_number() over (раздел по' по строке 1 –

+0

Мне нужно предложение от вас ... как загрузить более 50000rows в listobx/select box bcoz, это занимает больше времени загрузки на веб-странице. Мой запрос, например .... select name from master –

+0

Если у вас есть другой вопрос, вы должны задать вопрос в виде вопроса с соответствующими тегами, образцами кода и другой информацией. –

Смежные вопросы