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

PHP MySQL mysql_fetch_assoc với các khóa mảng được phân biệt bằng ký hiệu 'as'

Miễn là bạn đang sử dụng * ký tự đại diện, bạn sẽ thấy các cột có cùng tên sẽ ghi đè lên các khóa giống nhau trong mảng kết hợp của bạn.

Bạn phải đặt bí danh cột cho các cột từ ít nhất một trong các bảng:

select t1.*, t2.col1 as t2col1, t2.col2 as t2col2, ...
from table as t1 LEFT JOIN table as t2 ON t1.id=t2.rank

Hoặc nếu không, bạn có thể sử dụng ký tự đại diện, nhưng tìm nạp hàng dưới dạng một mảng thứ tự:

$row = mysql_fetch_array($result, MYSQL_NUM);
echo $row[4];

Nhận xét của bạn:SQL chỉ có * ký tự đại diện có nghĩa là "tất cả các cột từ một bảng nhất định, theo tên tự nhiên của chúng." Bạn phải đặt bí danh cho các cột một cách rõ ràng, trên cơ sở từng cột.

Ngoại lệ:Nếu bạn sử dụng SQLite, có pragma full_column_names tùy chọn làm cho tập hợp kết quả trả về các tên cột đủ điều kiện, vì vậy bạn có thể sử dụng * nhưng các khóa trở lại có tiền tố là bí danh bảng. Đây là SQL cụ thể và SQL không chuẩn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khi nào * không * sử dụng câu lệnh đã chuẩn bị sẵn?

  2. Hiệu suất MySQL:Xác định các truy vấn dài

  3. Chạy di chuyển với Rails trong vùng chứa Docker với nhiều bản sao vùng chứa

  4. Mysql:kết quả từ bảy ngày qua

  5. Cách tạo cột biến giả cho hàng nghìn danh mục trong Google BigQuery?