簡體   English   中英

如何使用 MySQL SELECT 創建虛擬列?

[英]How to create virtual column using MySQL SELECT?

如果我做 SELECT a AS b 並且 b 不是表中的列,查詢會創建“虛擬”列嗎?

事實上,我需要將一些虛擬列合並到查詢中,並將一些信息處理到查詢中,以便我以后可以將它用於每個項目。

類似的東西:

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

這允許您進行操作並將其顯示為列。

編輯:

您還可以使用連接並將操作顯示為列:

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

如果你想在 select 語句中創建一個虛擬列“age”,試試這個:

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

您可以將虛擬列添加為

SELECT '1' as temp

但是,如果您嘗試將 where 條件添加到額外生成的列中,它將不起作用,並且會顯示錯誤消息,因為該列不存在。

我們可以通過將 sql 結果作為 table.ie 返回來解決這個問題,

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

SELECT 僅從數據庫中檢索數據,它不會更改表本身。

如果你寫

SELECT a AS b FROM x

“b”只是查詢中的別名。 它不會創建額外的列。 您在示例中的結果將僅包含名為“b”的一列。 但是表中的列將保留為“a”。 “b”只是另一個名字。

我真的不明白你的意思是“所以我以后可以用它來處理每個項目”。 你的意思是在 select 語句后面還是在你的應用程序后面。 也許您可以提供一些示例代碼。

您可以使用 CASE 語句,例如

SELECT name
       ,address
       ,CASE WHEN a < b THEN '1' 
             ELSE '2' END AS one_or_two
FROM ...

您的語法將為 a 創建一個別名為 b,但它的范圍不會超出語句的結果。 聽起來您可能想要創建一個VIEW

請參閱MariaDB 文檔 虛擬列是通過向列添加關鍵字VIRTUAL並在其之前添加表達式來創建的。 好處是:您可以向虛擬列添加索引。 如果您需要實際值並擔心存儲速度,請使用PERSISTENT列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM