如何使用MySQL SELECT创建虚拟列?

时间:2009-01-18 14:57:59

标签: php mysql select

如果我选择了一个AS b而b不是表中的一列,会查询创建“虚拟”列吗?

实际上,我需要在查询中加入一些虚拟列并将一些信息处理到查询中,以便稍后我可以将它与每个项目一起使用。

6 个答案:

答案 0 :(得分:78)

类似

    SELECT id, email, IF(actived = 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

答案 1 :(得分:57)

如果要在select语句中创建虚拟列“age”,请尝试使用此选项:

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

答案 2 :(得分:9)

您可以将虚拟列添加为

SELECT '1' as temp

但是如果你试图将where条件放到另外生成的列中,它就不会工作,并且会显示错误消息,因为列不存在。

我们可以通过将sql结果作为table.ie,

返回来解决这个问题
SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1

答案 3 :(得分:3)

SELECT仅从数据库中检索数据,它不会更改表本身。

如果你写

SELECT a AS b FROM x

“b”只是查询中的别名。它不会创建额外的列。示例中的结果只包含一个名为“b”的列。但表中的列将保持“a”。 “b”只是另一个名字。

我真的不明白你的意思“所以我可以在以后的每个项目中使用它”。您是指稍后在选择语句中或稍后在您的应用程序中。也许你可以提供一些示例代码。

答案 4 :(得分:1)

您可以使用CASE语句,例如

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

答案 5 :(得分:0)

您的语法将为a b创建别名,但它不会超出语句结果的范围。听起来您可能想要创建VIEW