Подсчет записи в столбце MySQL и количество отображений

#mysql #sql

#mysql #sql

Вопрос:

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

Желаемый результат:

 arrangement_number      tray_no  rl_type  flag(count of occurrence)
------------------      -------  ----     ----
2774818                 381001   R        3
2774818                 381001   R        3
2774818                 381001   L        3
2778470                 405128   R        1
2779702                 265265   R        2
2779702                 265265   R        2
  

В настоящее время я пытаюсь использовать запросы @variables , но я все еще не могу понять это правильно.
каждая строка уникальна, и мне нужно, чтобы они не группировались.

Обновление: в расширенную таблицу добавлен исходный код

Примечание: в настоящее время я присоединяюсь к 5 таблицам

Фактический запрос:

 SELECT 
    log.arrangement_number,
    header.tray_number,
    detail.rl_type,

    -- some more fields here

FROM
    log
        INNER JOIN
    header ON log.arrangement_number = header.rxarrangement_number
        AND log.production_place_code = header.production_place_code
        INNER JOIN
    detail ON log.arrangement_number = detail.rxarrangement_number
        AND log.production_place_code = detail.production_place_code
        INNER JOIN
    deliveryperiod ON log.arrangement_number = deliveryperiod.arrangement_number
        AND log.production_place_code = deliveryperiod.production_place_code
        AND detail.rl_type = deliveryperiod.rl_type
        INNER JOIN
    calc ON calc.arrangement_number = log.arrangement_number
        AND calc.production_place_code = log.production_place_code
        AND deliveryperiod.rl_type = calc.rl_type
        AND detail.rl_type = calc.rl_type
WHERE
    header.status_code IN ('20' , '21')
        AND log.process_code = '12'
        AND deliveryperiod.process_code_current = '12'
        AND deliveryperiod.sub_process_code_current IN ('100' , '105')
        AND lot_number = '120131'
ORDER BY log.lot_number , log.sequence_number , deliveryperiod.rl_type DESC
  

Комментарии:

1. SELECT tray_no, COUNT(*) AS flag FROM table GROUP BY tray_no .

2. @FelixPamittan Осторожно: если он хочет также сохранить все исходные записи, то вам, вероятно, придется использовать подзапрос.

3. Я не могу использовать GROUP BY , мне нужны флаги для каждой строки. Я уменьшил его.

4. Структура таблицы и примеры данных были бы полезны… Вы ищете mysql эквивалент count/over ? @TimBiegeleisen предлагает хорошее решение ниже. Альтернативы включают коррелированные подзапросы и определяемые пользователем переменные…

5. Добавлен исходный код. Я возился с этим запросом со вчерашнего дня..

Ответ №1:

 SELECT t1.tray_no,
       t2.flag
FROM yourTable
INNER JOIN
(
    SELECT tray_no, COUNT(*) AS flag
    FROM yourTable
    GROUP BY tray_no
) t2
    ON t1.tray_no = t2.tray_no
  

Ответ №2:

попробуйте это…

 SELECT tray_no, COUNT(*) 'flag'
FROM table1
GROUP BY tray_no