Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menambahkan bidang alias MySQL bersama-sama

Berikut adalah urutan bagaimana sesuatu dijalankan di mesin database.

Perhatikan bahwa ini adalah tampilan semantik tentang bagaimana sesuatu dijalankan, database mungkin melakukan sesuatu dalam urutan yang berbeda, tetapi harus menghasilkan hasil seolah-olah dilakukan dengan cara ini.

  1. Pertama bagian FROM dievaluasi, dari mana saya mendapatkan data
  2. Kemudian bagian WHERE dievaluasi, baris mana yang kita minati
  3. Kemudian bagian GROUP BY dievaluasi, bagaimana kita menggabungkan baris yang dihasilkan
  4. Kemudian bagian HAVING dievaluasi, kelompok mana yang kami minati
  5. Kemudian bagian ORDER BY dievaluasi, urutan baris/grup mana yang kita inginkan
  6. Akhirnya, bagian SELECT dievaluasi, kolom mana yang kami minati

Beberapa mesin basis data memungkinkan Anda untuk menghindari ini, dengan bersaing "GROUP BY 2" untuk mengelompokkan berdasarkan kolom ke-2 di bagian SELECT, tetapi jika Anda tetap berpegang pada urutan di atas, Anda harus tahu sekarang bahwa alasan kode Anda tidak 't bekerja adalah bahwa tidak ada kolom dengan nama total atau total2 (belum).

Dengan kata lain, Anda perlu mengulang kedua ekspresi tersebut, atau mencari cara lain untuk melakukannya.

Yang dapat Anda lakukan adalah menggunakan sub-kueri (asalkan Anda menggunakan versi MySQL yang mendukung ini):

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

Mencoret sisanya sesuai komentar.

Saya tidak tahu banyak tentang MySQL, jadi Anda mungkin harus membuat alias sub-kueri:

...

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

Beberapa mesin basis data juga melarang penggunaan kata kunci AS saat membuat alias subkueri, jadi jika cara di atas tidak berhasil, coba ini:

...

    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. Beberapa Pembaruan di MySQL

  2. Node.js MySQL - Kesalahan:sambungkan ECONNREFUSED

  3. Python 3.7, Roda pembuatan yang gagal untuk MySql-Python

  4. django.db.utils.operationalError:(2059,Otentikasi Plugin 'caching_sha2_password')

  5. apakah baik menyimpan nilai desimal sebagai varchar di mysql?