#mysql #sql #sum
#mysql #sql #сумма
Вопрос:
У меня есть таблица с 3 столбцами, nr (INT (10), name (varchar (100) и value (INT (10)
id name value
1 aa 10
2 aa 88
3 bb 20
4 bb 33
5 aa 74
6 bb 66
То, что я хочу сделать, это временная таблица или представление, которое практически является подсчетами / промежуточными итогами, основанными на имени, подобном этому:
id name value
1 aa 172
2 bb 66
Я могу сделать это с помощью PHP очень трудоемким способом с большим циклом и несколькими небольшими циклами, но в моей таблице 18000 записей, и это не работает таким образом.
Ответ №1:
Вы могли бы сгруппировать по name
:
SELECT name, SUM(value)
FROM mytable
GROUP BY name
Редактировать:
Чтобы ответить на вопрос в комментарии, вы можете создать представление из этого запроса, используя create view
синтаксис:
CREATE VIEW myview AS
SELECT name, SUM(value)
FROM mytable
GROUP BY name
В качестве альтернативы вы можете создать таблицу из него, используя create table
синтаксис:
CREATE TABLE sum_table
SELECT name, SUM(value)
FROM mytable
GROUP BY name
Комментарии:
1. но как мне перенести этот результат в таблицу или представление? Мне нужен результат в таблице.
Ответ №2:
Вы также можете использовать SELECT В
ВЫБЕРИТЕ name, SUM(значение) В new_table Из ГРУППЫ mytable ПО имени; ПЕРЕЙДИТЕ
Комментарии:
1. Сервер MySQL не поддерживает ВЫБОР… В расширение TABLE Sybase SQL. Вместо этого сервер MySQL поддерживает вставку В … ВЫБЕРИТЕ стандартный синтаксис SQL, который в основном является тем же самым.
2. В этом случае мы можем использовать приведенную выше таблицу create вместе с запросом select