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

时间:2018-01-19 20:15:44

标签: mysql sql select

在自学网站上,我使用了一个SQLlite界面,允许我引用我刚才写的项目。

例如:

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

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

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

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

但是,从性能的角度来看,即使它更长,你最好使用原始查询。

答案 1 :(得分:2)

它应该不起作用。 SQL(通常)不保证SELECT中表达式的评估顺序。因此,它不允许重复使用在同一级别定义的别名。

在您的情况下,最简单的解决方案是重复表达式:

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

不优雅,但它完成了工作。

在MySQL中,这比子查询更好,因为MySQL实现了子查询,增加了额外的开销。