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

Zdefiniuj zmienną w ramach wyboru i użyj jej w ramach tego samego wyboru

MySQL dokumentacja jest w tej kwestii całkiem jasne:

Zgodnie z ogólną zasadą, nigdy nie należy przypisywać wartości do zmiennej użytkownika i odczytywać wartości w ramach tej samej instrukcji. Możesz uzyskać rezultaty, których oczekujesz, ale nie jest to gwarantowane. Kolejność oceny wyrażeń zawierających zmienne użytkownika jest niezdefiniowana i może się zmieniać w zależności od elementów zawartych w danej instrukcji; ponadto nie ma gwarancji, że ta kolejność będzie taka sama między wydaniami serwera MySQL. W SELECT @a, @a:przykł[email protected] +1, ... możesz pomyśleć, że MySQL najpierw oceni @a, a potem wykona przypisanie. Jednak zmiana instrukcji (na przykład przez dodanie klauzuli GROUP BY, HAVING lub ORDER BY) może spowodować, że MySQL wybierze plan wykonania z inną kolejnością oceny.

Możesz robić, co chcesz, używając podzapytania:

select @z, @z*2
from (SELECT @z:=sum(item)
      FROM TableA
     ) t;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać wczorajszą datę w MySQL?

  2. Używanie wątków do wysyłania żądań do bazy danych

  3. SQL dzielony wiersz oddzielony przecinkami

  4. Resetowanie wskaźnika tablicy w wynikach PDO

  5. Kiedy używać MyISAM i InnoDB?