2009-01-18 51 views
48

如果我做了SELECT a b和b不是表中的列,會查詢創建「虛擬」列嗎?如何使用MySQL SELECT創建虛擬列?

實際上,我需要在查詢中包含一些虛擬列,並將一些信息處理到查詢中,以便稍後在每個項目中使用它。

+1

我讀過這個問題了幾次,一定有我丟失的東西。你能否澄清一下你正在尋找什麼? – 2009-01-18 15:01:19

+0

將該查詢設想爲行和列的數組。通常,我只是通過簡單的SELECT * FROM繼承表結構中的列,但現在,我需要將自己的列插入它。 – Skuta 2009-01-18 15:05:35

+2

也許你應該採取_one_看看文檔.. – hop 2009-01-18 15:07:15

回答

63

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

這讓你做出操作並顯示爲列。

編輯:

你也可以使用連接和顯示operaitons爲列:

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 
3

選擇只從數據庫中檢索數據時,它不會更改表本身。

如果你寫

SELECT a AS b FROM x 

「B」 只是在查詢的別名。它不會創建額外的列。您在示例中的結果將只包含一個名爲「b」的列。但是表中的列將保持「a」。 「b」只是另一個名字。

我真的不明白你的意思,所以我可以在以後的每個項目中使用它。你的意思是稍後在選擇聲明或更高版本的應用程序中。也許你可以提供一些示例代碼。

0

您的語法會爲a創建別名,但它不會超出語句結果的範圍。這聽起來像你可能要創建,如果你想創建一個SELECT語句中的虛擬列「年齡」一VIEW

49

試試這個:

select brand, name, "10" as age from cars... 
6

您可以添加虛擬列作爲

SELECT '1' as temp 

但是,如果您試圖將附加生成列的條件放在哪裏,它將無法正常工作,並且會顯示錯誤消息,因爲該列不存在。

我們可以返回SQL結果作爲table.ie解決這個問題,

SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1