Mysql
 sql >> база данни >  >> RDS >> Mysql

Дефинирайте променлива в рамките на select и я използвайте в рамките на същия select

MySQL документация е съвсем ясен по въпроса:

Като общо правило, никога не трябва да присвоявате стойност на потребителска променлива и да четете стойността в рамките на същия израз. Може да получите очакваните резултати, но това не е гарантирано. Редът на оценка за изрази, включващи потребителски променливи, е недефиниран и може да се промени въз основа на елементите, съдържащи се в даден израз; в допълнение, този ред не е гарантирано, че е същият между версиите на MySQL Server. В SELECT @a, @a:[email protected] +1, ..., може да си помислите, че MySQL първо ще оцени @a и след това ще направи assignmentssecond. Въпреки това, промяната на израза (например чрез добавяне на клауза GROUP BY, HAVING или ORDER BY) може да накара MySQL да избере план за изпълнение с различен ред на оценка.

Можете да правите каквото искате, като използвате подзаявка:

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. mysql_fetch_assoc():предоставеният аргумент не е валиден ресурс за MySQL резултат в php

  2. Как да управлявате бази данни с phpMyAdmin

  3. Как да разбера дали MySQLnd е активният драйвер?

  4. Задайте PDO да хвърля изключения по подразбиране

  5. WEEKDAY() Примери – MySQL