Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dodawanie pól aliasów MySQL razem

Oto kolejność wykonywania czynności w silniku bazy danych.

Zwróć uwagę, że jest to semantyczny widok tego, jak rzeczy są wykonywane, baza danych może wykonywać różne czynności w innej kolejności, ale musi dawać wyniki tak, jakby była wykonana w ten sposób.

  1. Najpierw oceniana jest część FROM, skąd mam uzyskać dane
  2. Następnie oceniana jest część WHERE, które wiersze nas interesują
  3. Następnie oceniana jest część GROUP BY, jak połączyć wynikowe wiersze
  4. Następnie oceniana jest część POSIADAJĄCA, którymi grupami jesteśmy zainteresowani
  5. Następnie oceniana jest część ORDER BY, w jakiej kolejności chcemy uzyskać te wiersze/grupy
  6. Na koniec oceniana jest część SELECT, które kolumny nas interesują

Niektóre silniki baz danych pozwalają to obejść, mówiąc „GROUP BY 2”, aby pogrupować według drugiej kolumny w części SELECT, ale jeśli trzymasz się powyższej kolejności, powinieneś już wiedzieć, że twój kod nie nie działa to, że nie ma kolumn z nazwami total lub total2 (jeszcze).

Innymi słowy, musisz albo powtórzyć te dwa wyrażenia, albo znaleźć inny sposób na zrobienie tego.

Możesz użyć podzapytania (pod warunkiem, że korzystasz z wersji MySQL, która to obsługuje):

SELECT total, total2, total+total2 as grandtotal
FROM (
    SELECT sum(EXPR) as total, sum(EXPR) as total2
    FROM tablename
    ) x

Wykreślenie reszty zgodnie z komentarzem.

Nie wiem zbyt wiele o MySQL, więc być może będziesz musiał aliasować podzapytanie:

...

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

Niektóre silniki baz danych również nie zezwalają na używanie słowa kluczowego AS podczas tworzenia aliasów podzapytań, więc jeśli powyższe nie działa, wypróbuj to:

...

    FROM tablename
    ) x
      ^
      |
      +-- add this



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC Wybierz pakietowanie/rozmiar pobierania za pomocą MySQL

  2. Łączenie się z mysql w xampp bez hasła

  3. sql jak połączyć trzy zapytania z dwóch tabel w jedno zapytanie

  4. Odmowa dostępu dla użytkownika „root”@„localhost” podczas próby nadania uprawnień. Jak nadawać uprawnienia?

  5. kolejność php mysql według sygnatury czasowej jest nieprawidłowa