我正在使用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
(与上述相同的错误)
答案 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