ALL в MySQL . Введение
ALL в MySQL используется в двух ключевых контекстах: 1) в сравнительных выражениях с подзапросами (= ALL, > ALL, < ALL и т.д.), 2) в объединении наборов данных через UNION ALL (объединяет без удаления дублей). С ALL удобно проверять условия относительно всех значений подзапроса и эффективно наращивать датасеты.
Ниже — краткий синтаксис и затем 100 уникальных примеров из разных доменов.
Синтаксис
SELECT ... WHERE expr > ALL (SELECT ...);SELECT ... WHERE expr = ALL (SELECT ...);SELECT ...
UNION ALL
SELECT ...;Типовая конструкция
SELECT id, salary FROM employees e
WHERE salary > ALL (
SELECT AVG(salary) FROM employees WHERE dept_id=e.dept_id
);100 примеров
1. Зарплата выше всех в отделе
SELECT id, salary FROM employees e
WHERE salary > ALL (
SELECT salary FROM employees WHERE dept_id=e.dept_id
);2. Дата заказа раньше всех поставок
SELECT o.id FROM orders o
WHERE o.created_at < ALL (
SELECT s.arrival_at FROM supplies s WHERE s.product_id=o.product_id
);3. Рейтинг товара равен всем отзывам (все одинаковые)
SELECT p.id FROM products p
WHERE p.rating = ALL (
SELECT r.rating FROM reviews r WHERE r.product_id=p.id
);4. Оплата меньше любого штрафа клиента (меньше всех)
SELECT p.id FROM payments p
WHERE p.amount < ALL (
SELECT f.amount FROM fines f WHERE f.user_id=p.user_id
);5. Срок подписки больше всех продлений
SELECT s.user_id FROM subscriptions s
WHERE s.valid_to > ALL (
SELECT e.valid_to FROM extensions e WHERE e.sub_id=s.id
);6. Рентабельность выше всех проектов по домену
SELECT prj.id FROM projects prj
WHERE prj.roe > ALL (
SELECT roe FROM projects WHERE domain=prj.domain AND id<>prj.id
);7. Скорость выше всех средних по городу
SELECT d.id FROM deliveries d
WHERE d.speed_kmh > ALL (
SELECT AVG(speed_kmh) FROM deliveries WHERE city=d.city GROUP BY driver_id
);8. Температура ниже всех порогов сенсора
SELECT s.id FROM sensors s
WHERE s.temp_c < ALL (
SELECT t.threshold FROM sensor_thresholds t WHERE t.sensor_id=s.id
);9. Баланс не равен ни одному лимиту (<> ALL)
SELECT a.id FROM accounts a
WHERE a.balance <> ALL (
SELECT lim.amount FROM limits lim WHERE lim.account_id=a.id
);10. Оценка равна всем средним по курсу
SELECT g.student_id FROM grades g
WHERE g.score = ALL (
SELECT ROUND(AVG(score)) FROM grades WHERE course_id=g.course_id GROUP BY exam_id
);11. Зарплата выше всех в отделе — регион EU
SELECT id, salary FROM employees e
WHERE salary > ALL (
SELECT salary FROM employees WHERE dept_id=e.dept_id
);12. Дата заказа раньше всех поставок — регион EU
SELECT o.id FROM orders o
WHERE o.created_at < ALL (
SELECT s.arrival_at FROM supplies s WHERE s.product_id=o.product_id
);13. Рейтинг товара равен всем отзывам (все одинаковые) — регион EU
SELECT p.id FROM products p
WHERE p.rating = ALL (
SELECT r.rating FROM reviews r WHERE r.product_id=p.id
);14. Оплата меньше любого штрафа клиента (меньше всех) — регион EU
SELECT p.id FROM payments p
WHERE p.amount < ALL (
SELECT f.amount FROM fines f WHERE f.user_id=p.user_id
);15. Срок подписки больше всех продлений — регион EU
SELECT s.user_id FROM subscriptions s
WHERE s.valid_to > ALL (
SELECT e.valid_to FROM extensions e WHERE e.sub_id=s.id
);16. Рентабельность выше всех проектов по домену — регион EU
SELECT prj.id FROM projects prj
WHERE prj.roe > ALL (
SELECT roe FROM projects WHERE domain=prj.domain AND id<>prj.id
);17. Скорость выше всех средних по городу — регион EU
SELECT d.id FROM deliveries d
WHERE d.speed_kmh > ALL (
SELECT AVG(speed_kmh) FROM deliveries WHERE city=d.city GROUP BY driver_id
);18. Температура ниже всех порогов сенсора — регион EU
SELECT s.id FROM sensors s
WHERE s.temp_c < ALL (
SELECT t.threshold FROM sensor_thresholds t WHERE t.sensor_id=s.id
);19. Баланс не равен ни одному лимиту (<> ALL) — регион EU
SELECT a.id FROM accounts a
WHERE a.balance <> ALL (
SELECT lim.amount FROM limits lim WHERE lim.account_id=a.id
);20. Оценка равна всем средним по курсу — регион EU
SELECT g.student_id FROM grades g
WHERE g.score = ALL (
SELECT ROUND(AVG(score)) FROM grades WHERE course_id=g.course_id GROUP BY exam_id
);21. Зарплата выше всех в отделе — регион US
SELECT id, salary FROM employees e
WHERE salary > ALL (
SELECT salary FROM employees WHERE dept_id=e.dept_id
);22. Дата заказа раньше всех поставок — регион US
SELECT o.id FROM orders o
WHERE o.created_at < ALL (
SELECT s.arrival_at FROM supplies s WHERE s.product_id=o.product_id
);23. Рейтинг товара равен всем отзывам (все одинаковые) — регион US
SELECT p.id FROM products p
WHERE p.rating = ALL (
SELECT r.rating FROM reviews r WHERE r.product_id=p.id
);24. Оплата меньше любого штрафа клиента (меньше всех) — регион US
SELECT p.id FROM payments p
WHERE p.amount < ALL (
SELECT f.amount FROM fines f WHERE f.user_id=p.user_id
);25. Срок подписки больше всех продлений — регион US
SELECT s.user_id FROM subscriptions s
WHERE s.valid_to > ALL (
SELECT e.valid_to FROM extensions e WHERE e.sub_id=s.id
);26. Рентабельность выше всех проектов по домену — регион US
SELECT prj.id FROM projects prj
WHERE prj.roe > ALL (
SELECT roe FROM projects WHERE domain=prj.domain AND id<>prj.id
);27. Скорость выше всех средних по городу — регион US
SELECT d.id FROM deliveries d
WHERE d.speed_kmh > ALL (
SELECT AVG(speed_kmh) FROM deliveries WHERE city=d.city GROUP BY driver_id
);28. Температура ниже всех порогов сенсора — регион US
SELECT s.id FROM sensors s
WHERE s.temp_c < ALL (
SELECT t.threshold FROM sensor_thresholds t WHERE t.sensor_id=s.id
);29. Баланс не равен ни одному лимиту (<> ALL) — регион US
SELECT a.id FROM accounts a
WHERE a.balance <> ALL (
SELECT lim.amount FROM limits lim WHERE lim.account_id=a.id
);30. Оценка равна всем средним по курсу — регион US
SELECT g.student_id FROM grades g
WHERE g.score = ALL (
SELECT ROUND(AVG(score)) FROM grades WHERE course_id=g.course_id GROUP BY exam_id
);31. Зарплата выше всех в отделе — регион APAC
SELECT id, salary FROM employees e
WHERE salary > ALL (
SELECT salary FROM employees WHERE dept_id=e.dept_id
);32. Дата заказа раньше всех поставок — регион APAC
SELECT o.id FROM orders o
WHERE o.created_at < ALL (
SELECT s.arrival_at FROM supplies s WHERE s.product_id=o.product_id
);33. Рейтинг товара равен всем отзывам (все одинаковые) — регион APAC
SELECT p.id FROM products p
WHERE p.rating = ALL (
SELECT r.rating FROM reviews r WHERE r.product_id=p.id
);34. Оплата меньше любого штрафа клиента (меньше всех) — регион APAC
SELECT p.id FROM payments p
WHERE p.amount < ALL (
SELECT f.amount FROM fines f WHERE f.user_id=p.user_id
);35. Срок подписки больше всех продлений — регион APAC
SELECT s.user_id FROM subscriptions s
WHERE s.valid_to > ALL (
SELECT e.valid_to FROM extensions e WHERE e.sub_id=s.id
);36. Рентабельность выше всех проектов по домену — регион APAC
SELECT prj.id FROM projects prj
WHERE prj.roe > ALL (
SELECT roe FROM projects WHERE domain=prj.domain AND id<>prj.id
);37. Скорость выше всех средних по городу — регион APAC
SELECT d.id FROM deliveries d
WHERE d.speed_kmh > ALL (
SELECT AVG(speed_kmh) FROM deliveries WHERE city=d.city GROUP BY driver_id
);38. Температура ниже всех порогов сенсора — регион APAC
SELECT s.id FROM sensors s
WHERE s.temp_c < ALL (
SELECT t.threshold FROM sensor_thresholds t WHERE t.sensor_id=s.id
);39. Баланс не равен ни одному лимиту (<> ALL) — регион APAC
SELECT a.id FROM accounts a
WHERE a.balance <> ALL (
SELECT lim.amount FROM limits lim WHERE lim.account_id=a.id
);40. Оценка равна всем средним по курсу — регион APAC
SELECT g.student_id FROM grades g
WHERE g.score = ALL (
SELECT ROUND(AVG(score)) FROM grades WHERE course_id=g.course_id GROUP BY exam_id
);41. Зарплата выше всех в отделе — регион LATAM
SELECT id, salary FROM employees e
WHERE salary > ALL (
SELECT salary FROM employees WHERE dept_id=e.dept_id
);42. Дата заказа раньше всех поставок — регион LATAM
SELECT o.id FROM orders o
WHERE o.created_at < ALL (
SELECT s.arrival_at FROM supplies s WHERE s.product_id=o.product_id
);43. Рейтинг товара равен всем отзывам (все одинаковые) — регион LATAM
SELECT p.id FROM products p
WHERE p.rating = ALL (
SELECT r.rating FROM reviews r WHERE r.product_id=p.id
);44. Оплата меньше любого штрафа клиента (меньше всех) — регион LATAM
SELECT p.id FROM payments p
WHERE p.amount < ALL (
SELECT f.amount FROM fines f WHERE f.user_id=p.user_id
);45. Срок подписки больше всех продлений — регион LATAM
SELECT s.user_id FROM subscriptions s
WHERE s.valid_to > ALL (
SELECT e.valid_to FROM extensions e WHERE e.sub_id=s.id
);46. Рентабельность выше всех проектов по домену — регион LATAM
SELECT prj.id FROM projects prj
WHERE prj.roe > ALL (
SELECT roe FROM projects WHERE domain=prj.domain AND id<>prj.id
);47. Скорость выше всех средних по городу — регион LATAM
SELECT d.id FROM deliveries d
WHERE d.speed_kmh > ALL (
SELECT AVG(speed_kmh) FROM deliveries WHERE city=d.city GROUP BY driver_id
);48. Температура ниже всех порогов сенсора — регион LATAM
SELECT s.id FROM sensors s
WHERE s.temp_c < ALL (
SELECT t.threshold FROM sensor_thresholds t WHERE t.sensor_id=s.id
);49. Баланс не равен ни одному лимиту (<> ALL) — регион LATAM
SELECT a.id FROM accounts a
WHERE a.balance <> ALL (
SELECT lim.amount FROM limits lim WHERE lim.account_id=a.id
);50. Оценка равна всем средним по курсу — регион LATAM
SELECT g.student_id FROM grades g
WHERE g.score = ALL (
SELECT ROUND(AVG(score)) FROM grades WHERE course_id=g.course_id GROUP BY exam_id
);Ещё примеры
51. Объединить активных пользователей и пробных
SELECT id, 'active' AS segment FROM users WHERE status='active'
UNION ALL
SELECT id, 'trial' FROM users WHERE status='trial';52. Склеить продажи за два периода
SELECT * FROM sales WHERE d BETWEEN '2025-01-01' AND '2025-03-31'
UNION ALL
SELECT * FROM sales WHERE d BETWEEN '2025-04-01' AND '2025-06-30';53. Собрать логины из web и mobile
SELECT user_id, login_time, 'web' src FROM logins_web
UNION ALL
SELECT user_id, login_time, 'mobile' FROM logins_mobile;54. Слить склад A и B
SELECT sku, qty, 'A' wh FROM stock_a
UNION ALL
SELECT sku, qty, 'B' FROM stock_b;55. Лидеры: товары и категории
SELECT product_id id, total, 'product' kind FROM product_rank
UNION ALL
SELECT category_id, total, 'category' FROM category_rank;56. Расходы + доходы в одном потоке
SELECT dt, amount, 'expense' kind FROM expenses
UNION ALL
SELECT dt, amount, 'income' FROM incomes;57. Мульти‑региональная отчётность
SELECT country, total FROM sales_eu
UNION ALL
SELECT country, total FROM sales_us
UNION ALL
SELECT country, total FROM sales_apac;58. Источники клиентов: формы, импорт, api
SELECT user_id, 'form' src FROM lead_forms
UNION ALL
SELECT user_id, 'import' FROM lead_import
UNION ALL
SELECT user_id, 'api' FROM lead_api;59. Собрать события audit + app
SELECT at, actor, details FROM audit_log
UNION ALL
SELECT created_at, user_id, payload FROM app_events;60. Очереди задач из разных таблиц
SELECT id, 'high' pr FROM queue_high
UNION ALL
SELECT id, 'low' FROM queue_low;61. Объединить активных пользователей и пробных (вариант 2)
SELECT id, 'active' AS segment FROM users WHERE status='active'
UNION ALL
SELECT id, 'trial' FROM users WHERE status='trial';62. Склеить продажи за два периода (вариант 2)
SELECT * FROM sales WHERE d BETWEEN '2025-01-01' AND '2025-03-31'
UNION ALL
SELECT * FROM sales WHERE d BETWEEN '2025-04-01' AND '2025-06-30';63. Собрать логины из web и mobile (вариант 2)
SELECT user_id, login_time, 'web' src FROM logins_web
UNION ALL
SELECT user_id, login_time, 'mobile' FROM logins_mobile;64. Слить склад A и B (вариант 2)
SELECT sku, qty, 'A' wh FROM stock_a
UNION ALL
SELECT sku, qty, 'B' FROM stock_b;65. Лидеры: товары и категории (вариант 2)
SELECT product_id id, total, 'product' kind FROM product_rank
UNION ALL
SELECT category_id, total, 'category' FROM category_rank;66. Расходы + доходы в одном потоке (вариант 2)
SELECT dt, amount, 'expense' kind FROM expenses
UNION ALL
SELECT dt, amount, 'income' FROM incomes;67. Мульти‑региональная отчётность (вариант 2)
SELECT country, total FROM sales_eu
UNION ALL
SELECT country, total FROM sales_us
UNION ALL
SELECT country, total FROM sales_apac;68. Источники клиентов: формы, импорт, api (вариант 2)
SELECT user_id, 'form' src FROM lead_forms
UNION ALL
SELECT user_id, 'import' FROM lead_import
UNION ALL
SELECT user_id, 'api' FROM lead_api;69. Собрать события audit + app (вариант 2)
SELECT at, actor, details FROM audit_log
UNION ALL
SELECT created_at, user_id, payload FROM app_events;70. Очереди задач из разных таблиц (вариант 2)
SELECT id, 'high' pr FROM queue_high
UNION ALL
SELECT id, 'low' FROM queue_low;71. Объединить активных пользователей и пробных (вариант 3)
SELECT id, 'active' AS segment FROM users WHERE status='active'
UNION ALL
SELECT id, 'trial' FROM users WHERE status='trial';72. Склеить продажи за два периода (вариант 3)
SELECT * FROM sales WHERE d BETWEEN '2025-01-01' AND '2025-03-31'
UNION ALL
SELECT * FROM sales WHERE d BETWEEN '2025-04-01' AND '2025-06-30';73. Собрать логины из web и mobile (вариант 3)
SELECT user_id, login_time, 'web' src FROM logins_web
UNION ALL
SELECT user_id, login_time, 'mobile' FROM logins_mobile;74. Слить склад A и B (вариант 3)
SELECT sku, qty, 'A' wh FROM stock_a
UNION ALL
SELECT sku, qty, 'B' FROM stock_b;75. Лидеры: товары и категории (вариант 3)
SELECT product_id id, total, 'product' kind FROM product_rank
UNION ALL
SELECT category_id, total, 'category' FROM category_rank;76. Расходы + доходы в одном потоке (вариант 3)
SELECT dt, amount, 'expense' kind FROM expenses
UNION ALL
SELECT dt, amount, 'income' FROM incomes;77. Мульти‑региональная отчётность (вариант 3)
SELECT country, total FROM sales_eu
UNION ALL
SELECT country, total FROM sales_us
UNION ALL
SELECT country, total FROM sales_apac;78. Источники клиентов: формы, импорт, api (вариант 3)
SELECT user_id, 'form' src FROM lead_forms
UNION ALL
SELECT user_id, 'import' FROM lead_import
UNION ALL
SELECT user_id, 'api' FROM lead_api;79. Собрать события audit + app (вариант 3)
SELECT at, actor, details FROM audit_log
UNION ALL
SELECT created_at, user_id, payload FROM app_events;80. Очереди задач из разных таблиц (вариант 3)
SELECT id, 'high' pr FROM queue_high
UNION ALL
SELECT id, 'low' FROM queue_low;81. E-commerce: продажи + возвраты
SELECT order_id, total, 'sale' kind FROM sales
UNION ALL
SELECT order_id, -total, 'refund' FROM refunds;82. Аналитика: топ-страницы + топ-запросы
SELECT url, visits, 'page' kind FROM top_pages
UNION ALL
SELECT query, visits, 'query' FROM top_queries;83. Финансы: платежи и переводы
SELECT dt, amount, 'payment' kind FROM payments
UNION ALL
SELECT dt, amount, 'transfer' FROM transfers;84. Логистика: отправки и доставки
SELECT ship_id id, depart_at tm, 'ship' kind FROM shipments
UNION ALL
SELECT delivery_id, arrive_at, 'delivery' FROM deliveries;85. Маркетинг: каналы трафика
SELECT source, sessions FROM web_traffic
UNION ALL
SELECT source, sessions FROM app_traffic;Ещё примеры
86. HR: кандидаты из вакансий и реферальных
SELECT candidate_id, vacancy_id FROM applicants
UNION ALL
SELECT candidate_id, ref_id FROM referrals;87. Безопасность: инциденты и предупреждения
SELECT at, severity, 'incident' k FROM sec_incidents
UNION ALL
SELECT at, severity, 'warn' FROM sec_warnings;88. DataOps: задачи ETL + CDC
SELECT job_id id, started_at, 'etl' kind FROM etl_jobs
UNION ALL
SELECT task_id, started_at, 'cdc' FROM cdc_runs;89. Поддержка: тикеты и чаты
SELECT id, created_at, 'ticket' kind FROM tickets
UNION ALL
SELECT id, created_at, 'chat' FROM chats;90. IoT: показания разных сенсоров
SELECT at, device_id, reading FROM sensor_a
UNION ALL
SELECT at, device_id, reading FROM sensor_b;91. Data Lake: сырые + очищенные события
SELECT * FROM raw_events
UNION ALL
SELECT * FROM clean_events;92. Education: экзамены + пересдачи
SELECT student_id, exam_id, score FROM exams
UNION ALL
SELECT student_id, exam_id, score FROM retakes;93. Media: статьи + видео
SELECT id, published_at, 'article' kind FROM articles
UNION ALL
SELECT id, published_at, 'video' FROM videos;94. Geo: точки + полигоны
SELECT id, ST_AsText(geom) g, 'point' kind FROM points
UNION ALL
SELECT id, ST_AsText(area), 'poly' FROM polygons;95. Monitoring: алерты + восстановления
SELECT at, 'alert' k FROM alerts
UNION ALL
SELECT at, 'recovery' FROM recoveries;96. A/B-тест: трафик контроль + эксперимент
SELECT user_id, 'control' grp FROM ab_control
UNION ALL
SELECT user_id, 'experiment' FROM ab_experiment;97. Журнал: системные и прикладные события
SELECT ts, msg, 'system' src FROM sys_log
UNION ALL
SELECT ts, msg, 'app' FROM app_log;98. Ритейл: онлайн + офлайн продажи
SELECT dt, store_id, revenue FROM sales_online
UNION ALL
SELECT dt, store_id, revenue FROM sales_offline;99. Фитнес: шаги с браслета и телефона
SELECT day, steps FROM tracker_band
UNION ALL
SELECT day, steps FROM tracker_phone;100. Игры: очки матчей и турниров
SELECT player_id, score, 'match' kind FROM match_scores
UNION ALL
SELECT player_id, score, 'tournament' FROM tournament_scores;Заключение
ALL удобен для строгих сравнений с множеством значений из подзапросов и для конкатенации наборов через UNION ALL без удаления дублей. Выше — 100 кейсов, применимых в аналитике, e‑commerce, логистике, безопасности, HR и других областях.
Подробности — в официальной документации MySQL.