我试图获得有关MySQL数据库的更多知识,并且我希望此处有人能够向我解释以下问题,因为我无法在任何地方找到这个特定的行为:
这有效:
SELECT justaname FROM (SELECT productName AS justaname FROM kclbs_products) sdfsdfsd
虽然没有:
SELECT justaname FROM (SELECT productName AS justaname FROM kclbs_products)
这真的很让我感到困惑,我相信这是一个怪癖,因为无论我怎样转动字符串' sdfsdfsd'无关紧要,查询仍然有效,即使它只是一个字符(或者是一个非常大的字符序列)。这个问题'目前对我来说并不代表一个问题,但我真的很想知道“为什么'我可以在任何可能的未来处理这种行为,我必须这样做。
提前致谢。
[UPDATE] 两个用户帮我提供了我的问题的答案,所以它解决了,谢谢!
答案 0 :(得分:2)
子查询名称
SELECT ... FROM (subquery) [AS] name ...
以下是mysql文档的参考文献 [AS] name子句是必需的,因为FROM子句中的每个表都必须具有名称。子查询选择列表中的任何列都必须具有唯一的名称。
有关更多信息,请使用https://dev.mysql.com/doc/refman/5.7/en/from-clause-subqueries.html
答案 1 :(得分:0)
这与MySQL无关,而且它在所有DBMS中都是一个规则。如果在FROM子句中使用子查询,则必须使用别名。
当您在子查询之后编写内容(如sdfsdfsd)时,DBMS会将其视为从子查询派生的表的别名。
您可以在FROM
子句中看到有关子查询的一些信息: