在自学网站上,我使用了一个SQLlite界面,允许我引用我刚才写的项目。
例如:
SELECT CONCAT(fName, ' ', lName) AS **Name**, CONCAT(**Name**, ' ', ID)
FROM Players;
我尝试在MySQL上这样做(如果重要的话,我使用Cloud9平台)并且它不起作用。它应该工作,我只是没有做对吗?或者没有这样的事情?
答案 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实现了子查询,增加了额外的开销。