Главная
›
Новости
MySQL запрос с суммой в WHERE
Опубликовано: 22.08.2018
SQL для начинающих (DML): группировка GROYP BY (MySql), Урок 9!Привет.
Сегодня рассмотрим как сделать в MySQL запрос с суммой в WHERE. Зачем это нужно? Допустим, вам нужно выбрать из нескольких страниц с JOIN значения (или даже из одной), сгруппированные по какому-либо идентификатору, при условии, что сумма SUM (или в другом случае count) будет больше определённого значения. Например, выбрать все фото с суммой просмотров больше 10, или выбрать все записи с количеством лайков больше 20. Тут поможет MySQL запрос с суммой в WHERE, так например, работает сервис продвижения сайта http://clancer.ru/ , он использует такие запросы для выбора оптимальных ключевых слов для клиентов.
Как сделать на MySQL запрос с суммой в WHERE?
Для решения этой задачи отлично подойдет команда HAVING в компании с GROUP BY. Приведем пример:
my_table:
ID | VALUE |
--------------
1 | 1 |
1 | 1 |
1 | 1 |
2 | -1 |
1 | 5 |
2 | 1 |
1 | 1 |
1 | 1 |
1 | 1 |
--------------
SELECT * FROM my_table GROUP BY my_table.id HAVING sum(my_table.value)>10
Это запрос выведет все значения из таблицы my_table, сгруппированные по ID и только те, сумма значений которых больше 10.
Выборка из таблиц. Оператор SELECT в MySQL
Для приведенной таблицы это будет только значение с ID = 1 (у ID=2 сумма меньше 10).
Есть и другой вариант использования MySQL запрос с суммой в WHERE
Предположим, у нас есть 2 таблицы:
table_1:
ID | title |
------------------
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 5 |
7 | 6 |
8 | 7 |
9 | 8 |
------------------
table_2:
ID | VALUE | id_table_1 |
-----------------------------------
1 | 1 | 1 |
1 | 1 | 2 |
1 | 1 | 1 |
2 | -1 | 4 |
1 | 5 | 1 |
2 | 1 | 1 |
1 | 1 | 2 |
1 | 1 | 1 |
1 | 1 | 7 |
-----------------------------------
Ситуация приблизительно такая же: есть значение (VALUE) в таблице table_2, в которой есть внешний индекс на таблицу table_1. Нужно выбрать все значения (конкретно title) из таблицы table_1, где сумма значений из таблицы table_2 будут больше 5.
Арифметические операторы и операции в MySQL: сложение, вычитание, деление, умножение
Применим наш код MySQL запрос с суммой в WHERE с HAVING:
SELECT table_1.* FROM table_1 LEFT JOIN table_2 ON table_1.id=table_2.id_table_1 GROUP BY table_1.id HAVING sum(table_2.value)>5
Опять в результате будет только table_1.id=1, но это уже из-за заполненных данных.
Думаю, идея ясна, применение MySQL запрос с суммой в WHERE можно найти. Если остались вопросы: пишите в комментарии или в зеленую кнопку «Задать вопрос специалистам».
42
Понравилась или помогла статья?
Купите мне кофе