Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Adicionando campos de alias do MySQL juntos


Aqui está a ordem de como as coisas são executadas em um mecanismo de banco de dados.

Observe que esta é uma visão semântica de como as coisas são executadas, o banco de dados pode fazer as coisas em uma ordem diferente, mas deve produzir resultados como se fosse feito dessa maneira.
  1. Primeiro, a parte FROM é avaliada, de onde obtenho dados
  2. Em seguida, a parte WHERE é avaliada, em quais linhas estamos interessados
  3. Em seguida, a parte GROUP BY é avaliada, como combinamos as linhas resultantes
  4. Em seguida, a parte HAVING é avaliada, em quais grupos estamos interessados
  5. Em seguida, a parte ORDER BY é avaliada, em qual ordem queremos essas linhas/grupos
  6. Finalmente, a parte SELECT é avaliada, em quais colunas estamos interessados

Alguns mecanismos de banco de dados permitem que você contorne isso, dizendo "GROUP BY 2" para agrupar pela 2ª coluna na parte SELECT, mas se você seguir a ordem acima, já deve saber que o motivo pelo qual seu código não 't trabalho é que não há colunas com os nomes total ou total2 (ainda).

Em outras palavras, você precisa repetir as duas expressões ou encontrar outra maneira de fazê-lo.

O que você pode fazer é usar uma subconsulta (desde que você esteja em uma versão do MySQL que suporte isso):
SELECT total, total2, total+total2 as grandtotal
FROM (
    SELECT sum(EXPR) as total, sum(EXPR) as total2
    FROM tablename
    ) x

Riscando o resto conforme o comentário.

Eu não sei muito sobre MySQL, então você pode ter que criar um apelido para a subconsulta:
...

    FROM tablename
    ) AS x
      ^-+^
        |
        +-- add this

Alguns mecanismos de banco de dados também não permitem o uso da palavra-chave AS ao fazer alias de subconsultas, portanto, se o acima não funcionar, tente isto:
...

    FROM tablename
    ) x
      ^
      |
      +-- add this