首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:如何引用SELECT查询中已经提到的项

MySQL:如何引用SELECT查询中已经提到的项
EN

Stack Overflow用户
提问于 2018-01-20 04:15:44
回答 2查看 39关注 0票数 1

在一个自学网站上,我使用了一个SQLlite界面,它允许我引用我刚刚写的一篇文章。

示例:

代码语言:javascript
复制
SELECT CONCAT(fName, ' ', lName) AS **Name**, CONCAT(**Name**, ' ', ID) 
FROM Players;

我尝试在MySQL上这样做(如果重要的话,我使用的是Cloud9平台),但它不起作用。它应该工作,而我根本没有做对吗?或者根本就没有这回事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-20 04:24:54

它应该不会起作用。一般而言,SQL不保证SELECT中表达式的求值顺序。因此,它不允许重用在同一级别中定义的别名。

在您的示例中,最简单的解决方案是重复该表达式:

代码语言:javascript
复制
SELECT CONCAT(fName, ' ', lName) AS Name, CONCAT(fName, ' ', lName, ' ', ID)
FROM Players;

不是很优雅,但它能完成工作。

在MySQL中,这比子查询好,因为MySQL具体化了子查询,增加了额外的开销。

票数 2
EN

Stack Overflow用户

发布于 2018-01-20 04:19:19

你可以试试这个:

代码语言:javascript
复制
SELECT CONCAT(A.Name, ' ', A.ID) FROM
(
    SELECT ID, CONCAT(fName, ' ', lName) AS Name FROM PLAYERS A
) A

然而,从性能的角度来看,我认为使用原始查询会更好,即使它更长。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48348856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档