Nếu bạn không muốn lặp lại biểu thức, bạn có thể sử dụng bảng dẫn xuất:
select *
from (
select id, cos(id) + cos(id) as op
from myTable
) as t
WHERE op > 1;
Điều này sẽ không có bất kỳ tác động nào đến hiệu suất, nó chỉ là đường cú pháp theo yêu cầu của tiêu chuẩn SQL.
Ngoài ra, bạn có thể viết lại phần trên thành một biểu thức bảng chung:
with t as (
select id, cos(id) + cos(id) as op
from myTable
)
select *
from t
where op > 1;
Cái nào bạn thích phần lớn là vấn đề về hương vị. CTE được tối ưu hóa theo cách tương tự như bảng dẫn xuất, vì vậy CTE đầu tiên có thể nhanh hơn, đặc biệt nếu có chỉ mục trên biểu thức cos(id) + cos(id)