2010-06-20 30 views
5

Bạn biết cách bạn có thể gán một tên cột tạm thời cho một giá trị trả về trong một câu lệnh SQL như thế này?Chọn AS temp_name FROM table WHERE temp_name = something?

SELECT something+this+that AS myvalue FROM mytable 

Có thể sử dụng tên tạm thời myvalue làm điều kiện không?

SELECT something+this+that AS myvalue FROM mytable WHERE myvalue = 10 

Tôi không thể tìm ra cú pháp để thực hiện việc này. Cách duy nhất tôi có thể tìm ra cách thực hiện nó là viết lại toàn bộ định nghĩa cột như sau:

SELECT something+this+that AS myvalue FROM mytable WHERE something+this+that = 10 

Rõ ràng ví dụ trên là một ví dụ nhỏ. Truy vấn của tôi, tôi cần phải làm điều này trên là cực kỳ phức tạp, do đó, có viết lại mỗi định nghĩa cột trả về cho mỗi điều kiện sẽ khá rắc rối.

Vì vậy, dù sao thì cú pháp này là gì? Có thể không?

+0

Phiên bản nào của máy chủ sql? –

Trả lời

7

Sử dụng một bảng có nguồn gốc ...

SELECT 
    myvalue 
FROM 
    (
    SELECT something+this+that AS myvalue FROM mytable 
    ) foo 
WHERE 
    myvalue = 10 

Hoặc sử dụng một CTE trông thanh lịch hơn, nhưng cũng giống

;WITh myCTE AS 
(
    SELECT something+this+that AS myvalue FROM mytable 
) 
SELECT 
    myvalue 
FROM 
    myCTE 
WHERE 
    myvalue = 10 

Hoặc một cột tính do đó, nó có thể sử dụng bình thường

ALTER TABLE MyTable ADD myvalue AS something+this+that 
0

Tôi không nghĩ điều đó là có thể, nhưng bạn có thể lừa bằng cách đặt dữ liệu vào bảng tạm thời và sau đó chạy truy vấn thứ hai để chạy phần còn lại.

SQL động hoặc đó, nhưng tôi không phải là người hâm mộ sau này.

-1

CHỌN một cái gì đó + này + rằng AS myvalue TỪ mytable WHERE myvalu e = 10

Bạn có thể thử một cái gì đó như thế:

SELECT something+this+that AS myvalue 
FROM `users` 
HAVING myvalue=10; 
Các vấn đề liên quan