2009-01-18 39 views
48

Nếu tôi CHỌN một AS b và b không phải là một cột trong bảng, truy vấn có tạo cột "ảo" không?Cách tạo cột ảo bằng cách sử dụng MySQL SELECT?

trên thực tế, tôi cần kết hợp một số cột ảo vào truy vấn và xử lý một số thông tin vào truy vấn để tôi có thể sử dụng nó với từng mục sau này.

+1

Tôi đã đọc các câu hỏi một vài lần và phải có một cái gì đó tôi đang thiếu. Bạn có thể làm rõ một chút chính xác những gì bạn đang tìm kiếm không? –

+0

Hãy tưởng tượng truy vấn dưới dạng mảng các hàng và cột. Thông thường, tôi chỉ kế thừa các cột từ cấu trúc bảng bằng SELECT * FROM đơn giản, nhưng bây giờ, tôi cần chèn cột của riêng mình vào nó. – Skuta

+2

có thể bạn nên xem _one_ xem tài liệu .. – hop

Trả lời

63

cái gì đó như

SELECT id, email, IF(actived = 1, 'enabled', 'disabled') AS account_status 
FROM users 

này cho phép bạn thực hiện các hoạt động và hiển thị nó như cột.

EDIT:

bạn cũng có thể sử dụng tham gia và chương trình operaitons như cột:

SELECT u.id, e.email, IF(c.id IS NULL, 'no selected', c.name) as country 
FROM users u LEFT JOIN countries c ON u.country_id = c.id 
+0

Bài đăng này chuyển kiến ​​thức của tôi về các câu lệnh mysql đơn giản một cách tiến lên :), có nghĩa là tôi có thể tạo BẤT CỨ "cột" không ?? – Skuta

+0

có! như phép màu..! –

+1

Nhưng bạn không thể sử dụng cột mới này để thực hiện các hoạt động hoặc đánh giá IF mới ... hoặc có? – Luis

3

CHỌN chỉ lấy dữ liệu từ cơ sở dữ liệu, nó không thay đổi bảng riêng của mình.

Nếu bạn viết

SELECT a AS b FROM x 

"b" chỉ là một cái tên bí danh trong truy vấn. Nó không tạo ra một cột phụ. Kết quả của bạn trong ví dụ này sẽ chỉ chứa một cột có tên là "b". Nhưng cột trong bảng sẽ ở lại "a". "b" chỉ là một tên khác.

Tôi thực sự không hiểu ý của bạn là gì "vì vậy tôi có thể sử dụng nó với từng mục sau". Bạn có ý nghĩa sau trong câu lệnh chọn hoặc sau này trong ứng dụng của bạn. Có lẽ bạn có thể cung cấp một số mã ví dụ.

0

Cú pháp của bạn sẽ tạo bí danh cho a là b, nhưng nó sẽ không có phạm vi vượt ra ngoài kết quả của câu lệnh. Có vẻ như bạn có thể muốn tạo một VIEW

49

Hãy thử này nếu bạn muốn tạo một cột ảo "tuổi" trong một tuyên bố chọn:

select brand, name, "10" as age from cars... 
+0

Bí quyết tốt. Đơn giản, nhưng tôi chưa bao giờ thử điều đó trước đây.Đây là chính xác những gì tôi đã tự hỏi! : D – Atomox

+1

Cảm ơn, đơn giản và rõ ràng !! – realmag777

+0

Đây là một mẹo nhỏ phức tạp để làm việc với các bảng khác trong cùng một truy vấn mysql: CHỌN tpt. *, (CHỌN COUNT (*) TỪ nơi WHERE tpt.id = places.type) như obj_count FROM 'places_types' như tpt ORDER Tpt.name ASC LIMIT?,? – realmag777

6

Bạn có thể thêm các cột ảo như

SELECT '1' as temp 

Nhưng nếu bạn cố gắng đặt điều kiện vào cột được tạo bổ sung, nó sẽ không hoạt động và sẽ hiển thị thông báo lỗi vì cột không tồn tại.

Chúng tôi có thể giải quyết vấn đề này bằng cách trả lại kết quả sql như một table.ie,

SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1 
Các vấn đề liên quan