2014-10-28 44 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

相關問題