为什么MySQL错误在一个简单的select语句中使用表别名?

时间:2014-08-06 15:02:54

标签: mysql sql

我正在使用phpmyadmin来测试一些MySQL查询。我正在尝试编写一个更大的嵌套查询,由于无法识别的表别名而失败,因此我正在尝试调试它的较小部分。但是,当我尝试有时使用表别名时,我会遇到令人困惑的错误。

你能解释为什么其中一些查询会抛出错误吗?

SELECT * FROM table1 AS tablealias1(有效)

SELECT * FROM table1 GROUP BY userid(有效)

SELECT * FROM table1 GROUP BY userid AS tablealias1(错误:#1064 - 您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在'AS tablealias1附近使用正确的语法 在第1行限制0,25'

SELECT * FROM table1 WHERE userid=1(有效)

SELECT * FROM table1 WHERE userid=1 AS tablealias1(与上述相同的错误)

(SELECT * FROM table1 WHERE userid=1) AS tablealias1(与上述相同的错误)

1 个答案:

答案 0 :(得分:1)

你将事物别名:

  • 重命名列显示的名称
  • 给它一个引用名,以便稍后在查询语句的其他地方使用(无论是显式还是隐式使用它 - 只要它可以在其他地方使用)。

如果您没有这样做,别名就没有意义了。您可以为结果集设置别名,除非它在子查询中使用,然后您需要一个别名来引用它。

这将有效:

 Select * FROM (SELECT * FROM table1 WHERE userid=1) AS tablealias1

暗示

  Select tablealias1.* FROM (SELECT * FROM table1 WHERE userid=1) AS tablealias1

独自一人,这是垃圾:

  (SELECT * FROM table1 WHERE userid=1) AS tablealias1