Quero somar a coluna "quantidade" agrupada por nome e servidor e remover linhas duplicadas. Quero que essas alterações sejam salvas (não apenas com uma consulta).
Por exemplo, aqui estão os dados iniciais:
Eu ia | servidor | nome | quantia |
---|---|---|---|
1 | 20 | a | 1 |
2 | 20 | a | 1 |
3 | 30 | b | 2 |
4 | 20 | b | 1 |
5 | 20 | a | 1 |
E aqui está o que eu quero:
Eu ia | servidor | nome | quantia |
---|---|---|---|
1 | 20 | a | 3 |
3 | 30 | b | 2 |
4 | 20 | b | 1 |
Na verdade, posso fazer isso com:
SELECT SUM(amount) as amount FROM myTable GROUP BY server, name;
Porém, obterei apenas o valor da coluna de valor. Não atualizará a tabela e nem removerá outras linhas.
Se eu fizer algo assim, UPDATE myTable SET amount = (SELECT SUM(amount) as amount FROM myTable WHERE server = myTable.server AND name = myTable.name)
não funcionará, pois não posso selecionar uma atualização.
Então, como posso fazer?
Basicamente você está pedindo para deletar os registros da sua tabela. Espero que este seja um processo único.
Isso pode ser feito inserindo seus dados "finais" em uma tabela temporária, truncando sua tabela existente e, em seguida, inserindo os dados da tabela temporária em sua tabela principal.
Pelo id me parece um excesso, você pode retirá-lo e deixá-lo com incremento automático.
Código
Resultado
consultar exemplo
Veja exemplo com novos id-s