2014-10-28 45 views
1

在MySQL中,select *,1 from t似乎是有效的,但select 1,* from t不是。为什么星号必须先出现?

  1. 这是为什么?
  2. 有没有这方面的官方文档?我找不到任何说后者无效的东西,我得到的错误信息也没有具体说明它。
+1

我想不出任何真正的原因,除了它使生活稍微容易一些。 MS SQL Server没有这样的限制(例如,'select 1,*,2,*,3 from table'工作正常)。 – 2014-10-28 19:46:33

回答

2

From the MySQL docs,你被告知可以做什么用的不合格*

只由一个单一的不合格*选择列表可用于简略到所有表中选择所有列:

SELECT * FROM t1 INNER JOIN t2 ...

你要找的相关文件是下面两个要点:

在选择列表中的其他项目可能会产生语法错误,使用不合格*的。为了避免这个问题,使用合格tbl_name.*参考

不幸的是,为什么没有在文档说明,并可能会采取一些挖掘。

+0

有趣。它说它可能会产生一个错误,但不会在什么情况下会产生错误。 – mpen 2014-10-28 20:14:09

+1

@Mark我很好奇 - 因为我很好奇,所以我打开源码树浏览。也许有评论解释为什么或者什么是解析方法。 – sjagr 2014-10-28 20:17:20

相关问题