Как управлять порядком идентификатора записи?

0

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

например

Идентификатор

  1. Джек
  2. Джек
  3. Павел
  4. боб
  5. боб
  6. Павел
  7. боб

Скажем, я выбрал имя = 'bob', таким образом, получил его идентификационные номера 4,5,7

Теперь я хочу, чтобы результаты были

в этом порядке 1, 2, 3...

вместо 4, 5, 7...

потому что он bob первый второй и третий, и т.д....

Какой самый простой способ сделать это?

  • 0
    Похоже, вы хотите отказаться от существующего идентификатора и назначить другой номер. Если это так, то вам, вероятно, нужен рейтинг .
  • 0
    @Erayd не могли бы вы уточнить? Мне любопытно, почему что-то выглядит просто, так как это не так просто сделать в MySQL. Как вы сказали, это в основном назначение выделенных строк с увеличенным числом, начиная с 1.
Показать ещё 3 комментария
Теги:

2 ответа

0

Если вы используете Mysql 8, тогда вы можете использовать функцию window rank() и общее выражение таблицы

with ordered_data as (
  select *, 
  rank() over (partition by name order by id asc ) rnk
  from your_table
  order by rnk
)
select * from ordered_data where name = 'bob';

Или, если вы используете более старую версию, вы можете использовать коррелированный запрос для получения рейтинга

select a.id,a.name,
    (select count(*) 
    from your_table 
     where name= a.name 
     and id <= a.id) rnk
from your_table a
where a.name = 'bob'
order by a.id;

демонстрация

0

Здесь переменные mysql могут выполнять эту работу. Объявите и инициализируйте переменную @a = 0, назначьте добавочное значение и выберите в запросе. Запрос должен выглядеть так:

SET @a = 0;
SELECT @a := @a + 1 AS id, name FROM table_name WHERE name = 'bob';
SET @a = 0;

В конце, снова установите значение @a = 0.

Ещё вопросы

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