SQL - Tips n Tricks

Отредачено 23.01.2025,
а чекнуто 690 💁

Поиск дубля

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) \> 1;

Несколько дублей

SELECT column1, column2, COUNT(*)
FROM table_name
GROUP BY column1, column2
HAVING COUNT(*) > 1;

Если же вам нужно найти записи, где любое из значений в наборе колонок дублируется, вы можете использовать более сложный запрос с подзапросами или объединением (UNION) нескольких запросов GROUP BY, каждый из которых будет проверять дубликаты в отдельной колонке. Вот пример такого запроса:

SELECT column1 FROM table_name
GROUP BY column1
HAVING COUNT(column1) > 1

UNION

SELECT column2 FROM table_name
GROUP BY column2
HAVING COUNT(column2) > 1;

Имба запрос если нужно группировать и выводить данные из одной и той же колонки (не по которой группировали кон)

SELECT 
    batch_id,
    GROUP_CONCAT(
        CONCAT(
            CASE
                WHEN job_name = 'App\\Jobs\\GenerateAndSignXmlJob' THEN 'БКИ'
                WHEN job_name = 'App\\Jobs\\ClientCheckJob' THEN 'Инфосфера'
                WHEN job_name = 'App\\Jobs\\ReceivingKBKIJob' THEN 'КБКИ'
                WHEN job_name = 'App\\Jobs\\MakeDecisionJob' THEN 'СПР'

                ELSE job_name
            END,
            ' (', result, ')'
        ) SEPARATOR ', '
    ) AS job_names_with_status,
    created_at
FROM 
    job_results
WHERE 
    created_at > '2024-10-31 00:00:00'
GROUP BY 
    batch_id;

Таблица выглядит так

 

После выполнения запроса

Грубо говоря, мы сокращаем 4 записи до одной с понятным выводом о применении джобы

Оптимизация