MYSQL группа автонумерации

0

У меня есть такая ситуация:

Запрос:

set @rank = 0;
select @rank:=@rank+1, CONCAT_WS(" ",'Group', SubGroup, TertiaryGroup) Items,ItemGroup, item from myTable

Здесь мои примеры текстовых данных

ПРЕДМЕТЫ:

A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:   
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:   
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       
A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       
A. CARRIER: 1. UNDERCARRIAGE: 1.2 Final Drive System Condition:         
A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:   
A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition: 
A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:   
A. CARRIER: 1. UNDERCARRIAGE: 1.4 Underchassis Condition:       
A. CARRIER: 1. UNDERCARRIAGE: 1.4 Underchassis Condition:   
A. CARRIER: 1. UNDERCARRIAGE: 1.4 Underchassis Condition:   
B. ENGINE SYSTEM Condition:     
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         
B. ENGINE SYSTEM Condition:         

Для меня достаточно только предметов, спасибо,

Но мне нужен результат, когда число автоначислений возвращается к 1 если элементы разные или изменены.

Как и в моем примере с образцом, число 10 должно возвращаться к 1 а следующее должно снова возвращаться к 1,2,3,4 и так далее.

Только столбец items не item

Является ли это возможным?

Заранее спасибо.

  • 0
    Вы хотели бы добавить пример данных в виде текста к вопросу? Подсказка -закажите и проверьте на предмет изменений.
  • 0
    Спасибо @P.SalmonP.Salmon wait обновит мой вопрос.
Теги:

2 ответа

1
Лучший ответ

Предполагая, что у вас есть способ упорядочить ваши данные (например, столбец идентификатора auto_increment), вы можете

insert into t (items)  values
('A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:'),
('A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:' )  ,
('A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:'),       
('A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:' ) ,    
('A. CARRIER: 1. UNDERCARRIAGE: 1.2 Final Drive System Condition:')  ,       
('A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:'),
('A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:' ),
('B. ENGINE SYSTEM Condition:') ,   
('B. ENGINE SYSTEM Condition:' ) ;

select items ,
            if(items <> @p,@rn:=1,@rn:=@rn+1) rn,
            @p:=items previousitem
from t
cross join (select @rn:=0,@p:='') r
order by id;

+-----------------------------------------------------------------+------+-----------------------------------------------------------------+
| items                                                           | rn   | previousitem                                                    |
+-----------------------------------------------------------------+------+-----------------------------------------------------------------+
| A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |    1 | A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |
| A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |    2 | A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |
| A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |    3 | A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |
| A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |    4 | A. CARRIER: 1. UNDERCARRIAGE: 1.1 Track System Condition:       |
| A. CARRIER: 1. UNDERCARRIAGE: 1.2 Final Drive System Condition: |    1 | A. CARRIER: 1. UNDERCARRIAGE: 1.2 Final Drive System Condition: |
| A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:       |    1 | A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:       |
| A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:       |    2 | A. CARRIER: 1. UNDERCARRIAGE: 1.3 Transmission Condition:       |
| B. ENGINE SYSTEM Condition:                                     |    1 | B. ENGINE SYSTEM Condition:                                     |
| B. ENGINE SYSTEM Condition:                                     |    2 | B. ENGINE SYSTEM Condition:                                     |
+-----------------------------------------------------------------+------+-----------------------------------------------------------------+
9 rows in set (0.00 sec)
  • 0
    Спасибо @ P.Salmon плохо попробую это.
  • 0
    я получил результат, но он возвращает 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 в нумерации. Его не увеличивается
Показать ещё 1 комментарий
1

Попробуй это:

set @rank = 0; set @key = ''; SELECT IF( CONCAT_WS(" ",'Group', SubGroup, TertiaryGroup) = @key, @rank:=@rank+1, 1), @key:=CONCAT_WS(" ",'Group', SubGroup, TertiaryGroup) Items,ItemGroup, item FROM myTable

  • 0
    Спасибо за ваш ответ, попробую.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню