Vấn đề
Tôi đang sử dụng tên cột khác (bí danh) trong một truy vấn, tôi có thể sử dụng bí danh "GIVEN_NAME" như một phần của ORDER BY nhưng tôi không thể sử dụng nó như là một phần của mệnh đề WHERE. WHERE "given_name" được chuyển thành kết quả của một yêu cầu ngoài tầm kiểm soát của tôi và tôi không biết tên cột thực tế sẽ được sử dụng trong điều kiện WHERE.Cột Bí danh trong một mệnh đề where
Câu hỏi
- Nó có một chiều/hack để sử dụng một bí danh cột trong một mệnh đề WHERE?
- Có cách nào để tìm tên cột từ bí danh không?
Nghiên cứu
Sau khi một số nghiên cứu có vẻ như bí danh được bổ sung sau sau mệnh đề WHERE.
Ví dụ
SELECT profile.id AS id, given.name AS 'given_name', family.name AS 'family_name'
FROM green_profile profile
LEFT JOIN green_name given ON given.profileid = profile.id AND given.name_typeid = 0
LEFT JOIN green_name family ON family.profileid = profile.id AND family.name_typeid = 1
WHERE given_name LIKE 'levi%'
ORDER BY given_name DESC LIMIT 0 , 25
Cảm ơn, lời giải thích tuyệt vời. Cả hai giải pháp hoạt động tuy nhiên sau khi điểm chuẩn so với một bảng lớn, giải pháp xem cung cấp hiệu suất tốt hơn nhiều. –
Tôi nghi ngờ rằng có thể như vậy, vì nó sẽ chỉ phải thực hiện lệnh chọn đầy đủ một lần cho chế độ xem, sau đó có thể cache và lập chỉ mục cho các cuộc gọi trong tương lai (không chắc chắn chi tiết của công việc này). Tôi hy vọng hiệu suất sẽ tốt hơn một chút chỉ đề cập đến các tên cột ban đầu, và không đối phó với quan điểm tất cả cùng nhau, nhưng hy vọng không phải là một sự khác biệt lớn. –