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

Mengapa penggunaan alias kolom dalam pemilihan yang sama tidak didukung di Oracle dan Mysql?

Alias ​​​​dapat digunakan dalam daftar pemilihan kueri untuk memberi kolom nama yang berbeda. Anda dapat menggunakan alias di GROUP BY , ORDER BY , atau HAVING klausa untuk merujuk ke kolom:

SELECT SQRT(a*b) AS root FROM tbl_name
  GROUP BY root HAVING root > 0;

SELECT id, COUNT(*) AS cnt FROM tbl_name
  GROUP BY id HAVING cnt > 0;

SELECT id AS 'Customer identity' FROM tbl_name;

SQL standar tidak mengizinkan referensi ke alias kolom di WHERE ayat. Pembatasan ini diberlakukan karena ketika WHERE klausa dievaluasi, nilai kolom mungkin belum ditentukan. Misalnya, kueri berikut ilegal:

SELECT id, COUNT(*) AS cnt FROM tbl_name
  WHERE cnt > 0 GROUP BY id;

WHERE klausa menentukan baris mana yang harus dimasukkan dalam GROUP BY klausa, tetapi mengacu pada alias dari nilai kolom yang tidak diketahui sampai setelah baris dipilih, dan dikelompokkan berdasarkan GROUP BY .

Dalam daftar pilih kueri, alias kolom yang dikutip dapat ditentukan menggunakan pengidentifikasi atau karakter kutipan string:

SELECT 1 AS `one`, 2 AS 'two';

Di bagian lain pernyataan, referensi yang dikutip ke alias harus menggunakan tanda kutip pengenal atau referensi diperlakukan sebagai string literal. Misalnya, pernyataan ini dikelompokkan berdasarkan nilai dalam id kolom, direferensikan menggunakan alias a :

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY `a`;

Tetapi pernyataan ini dikelompokkan berdasarkan string literal 'a' dan tidak akan berfungsi seperti yang diharapkan:

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY 'a';

Sumber:https://docs.Oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih jika ada yang lain masukkan?

  2. Cara menggunakan kondisi BETWEEN menggunakan menggunakan kueri utama dan sub kueri

  3. Apakah IP saya ada di database saya, jika demikian temukan stempel waktu

  4. hasilkan opsi pilih menggunakan array php

  5. Perbedaan MySql antara dua cap waktu dalam beberapa hari?