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 записи до одной с понятным выводом о применении джобы
Оптимизация