Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao việc sử dụng bí danh cột trong cùng một lựa chọn không được hỗ trợ trong Oracle và Mysql?

Một bí danh có thể được sử dụng trong danh sách chọn truy vấn để đặt tên khác cho cột. Bạn có thể sử dụng bí danh trong GROUP BY , ORDER BY hoặc HAVING mệnh đề tham chiếu đến cột:

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 chuẩn không cho phép tham chiếu đến bí danh cột trong WHERE mệnh đề. Hạn chế này được áp dụng vì khi WHERE mệnh đề được đánh giá, giá trị cột có thể chưa được xác định. Ví dụ:truy vấn sau là bất hợp pháp:

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

WHERE mệnh đề xác định hàng nào nên được đưa vào GROUP BY , nhưng nó đề cập đến bí danh của giá trị cột không được biết cho đến sau khi các hàng đã được chọn và được nhóm theo GROUP BY .

Trong danh sách được chọn của một truy vấn, bí danh cột được trích dẫn có thể được chỉ định bằng cách sử dụng mã định danh hoặc các ký tự trích dẫn chuỗi:

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

Ở những nơi khác trong câu lệnh, các tham chiếu được trích dẫn đến bí danh phải sử dụng trích dẫn định danh hoặc tham chiếu được coi là một chuỗi ký tự. Ví dụ:câu lệnh này nhóm theo các giá trị trong id cột, được tham chiếu bằng bí danh a :

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

Nhưng câu lệnh này nhóm theo chuỗi chữ 'a' và sẽ không hoạt động như mong đợi:

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

Nguồn: https://docs.oracle .com / cd / E17952_01 / refman-5.0-en / problem-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. WAMP và mysqli ::real_connect ():(HY000 / 2002)?

  2. Kết nối máy chủ web với cơ sở dữ liệu và J2ME

  3. Lược đồ cơ sở dữ liệu của Wufoo - Bạn sẽ thiết kế nó như thế nào?

  4. Xoay tập hợp kết quả mysql và tạo bảng / ma trận html

  5. Giám sát hiệu suất MySQL với ClusterControl