[英]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.