如果我选择了一个AS b而b不是表中的一列,会查询创建“虚拟”列吗?
实际上,我需要在查询中加入一些虚拟列并将一些信息处理到查询中,以便稍后我可以将它与每个项目一起使用。
答案 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