mysql:如何引用select查询中已经提到的项

waxmsbnn  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(344)

在一个自学网站上,我使用了一个sqllite界面,允许我引用我刚刚编写的一个项目。
前任。:

SELECT CONCAT(fName, ' ', lName) AS**Name**, CONCAT(**Name**, ' ', ID) 
FROM Players;

我在mysql上尝试过这样做(如果有必要的话,我使用的是cloud9平台),但没有成功。它应该工作,而我只是做得不对吗?或者根本就没有这回事?

ykejflvf

ykejflvf1#

它不应该起作用。sql(通常)不保证表达式在 SELECT . 因此,它不允许重复使用在同一级别中定义的别名。
在您的案例中,最简单的解决方案是重复以下表达式:

SELECT CONCAT(fName, ' ', lName) AS Name, CONCAT(fName, ' ', lName, ' ', ID)
FROM Players;

不优雅,但它能完成任务。
在mysql中,这比子查询好,因为mysql具体化子查询,增加了额外的开销。

6ju8rftf

6ju8rftf2#

你可以试试这个:

SELECT CONCAT(A.Name, ' ', A.ID) FROM
(
    SELECT ID, CONCAT(fName, ' ', lName) AS Name FROM PLAYERS A
) A

但是,从性能的Angular 来看,我认为使用原始查询会更好,即使它更长。

相关问题