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.