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

Добавяне на полета за псевдоним на MySQL заедно

Ето реда на това как се изпълняват нещата в машина за база данни.

Имайте предвид, че това е семантичен изглед за това как се изпълняват нещата, базата данни може да прави нещата в различен ред, но трябва да дава резултати, сякаш е направено по този начин.

  1. Първо се оценява FROM-частта, откъде да взема данни
  2. След това се оценява WHERE-частта, кои редове ни интересуват
  3. След това частта GROUP BY се оценява, как да комбинираме получените редове
  4. След това се оценява HAVING-частта, от кои групи се интересуваме
  5. След това се оценява частта ORDER BY, в кой ред искаме тези редове/групи
  6. Накрая се оценява SELECT-частта, кои колони ни интересуват

Някои машини за бази данни ви позволяват да заобиколите това, като кажете „GROUP BY 2“ за групиране по 2-ра колона в SELECT-частта, но ако се придържате към горния ред, вече трябва да знаете, че причината, поради която кодът ви не е Не работи е, че няма колони с имена total или total2 (все още).

С други думи, трябва или да повторите двата израза, или да намерите друг начин да го направите.

Това, което можете да направите, е да използвате подзаявка (при условие, че използвате версия на MySQL, която поддържа това):

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

Останалото се заличава според коментара.

Не знам много за MySQL, така че може да се наложи да поставите псевдоним на подзаявката:

...

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

Някои машини за бази данни също забраняват използването на ключовата дума AS при псевдонимни подзаявки, така че ако горното не работи, опитайте това:

...

    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. MySQL Дублирана грешка с ALTER IGNORE TABLE

  2. Sequelize:Или-условие върху множество таблици

  3. Защо Hibernate не създава база данни за MySQL?

  4. Извличане на ТОП 10 реда, без да използвате TOP или LIMIT? – Въпрос за интервю на седмицата #247

  5. Има ли някакъв начин на Laravel за изпълнение на .SQL файл за зареждане на данни