sql >> Databáze >  >> RDS >> Mysql

Definujte proměnnou v rámci select a použijte ji ve stejném výběru

MySQL dokumentace je v tom docela jasno:

Obecně platí, že byste nikdy neměli přiřazovat hodnotu uživatelské proměnné a číst hodnotu ve stejném příkazu. Můžete získat výsledky, které očekáváte, ale to není zaručeno. Pořadí hodnocení výrazů zahrnujících uživatelské proměnné není definováno a může se změnit na základě prvků obsažených v daném příkazu; navíc není zaručeno, že toto pořadí bude mezi vydáními serveru MySQL stejné. V SELECT @a, @a:[email protected] +1, ..., můžete si myslet, že MySQL nejprve vyhodnotí @a a poté provede přiřazení. Změna příkazu (například přidáním klauzule aGROUP BY, HAVING nebo ORDER BY) však může způsobit, že MySQL vybere plán provádění s jiným pořadím vyhodnocení.

Pomocí dílčího dotazu můžete dělat, co chcete:

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


  1. Základy správy schémat PostgreSQL

  2. Vložení do Oracle a načtení vygenerovaného ID sekvence

  3. Jak používat kruhovou datovou strukturu ve funkcích okna

  4. Jak zrušit identitu sloupce v tabulce SQL Server - SQL Server / Výukový program T-SQL 44