2015-04-01 56 views
0

好吧,只是調試的東西,我發現一個有線錯誤,可能它應該記錄在某處,但我搜索MYSQL文檔,並沒有發現任何東西。這裏是SQL查詢,產生近* from table1064錯誤,錯誤#1064,與選擇列,*從表

Select char_length(zip), zip, * from tbllocations 

但是,這下面的一個正常工作:

Select *, char_length(zip), zip from tbllocations 

我們不能用*在列列表的末尾?我在MySQL 5.5.41和MySql 5.0.95上測試這個查詢。我以前沒有注意到這個錯誤。我重寫查詢以避免特殊/隱藏字符。

它們不是相同的查詢,除了按列的順序更改嗎?任何解釋或資源來尋找一個。

編輯:

只要運行Select char_length(zip), zip, tbllocations.* from tbllocations並能正常工作?所以看起來我正在碰到一些錯誤?或任何邏輯,我錯過了?

回答

2

MySQL docs

  • 僅由甲選擇列表中的單個不合格*可以用作速記以從所有的表中選擇的所有列:

  • SELECT * FROM t1 INNER JOIN t2 ... tbl_name.*可以用作一個合格的簡寫形式以從命名錶中選擇所有列:

  • SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...使用不合格*與o選擇列表中的項目可能會產生解析錯誤。爲了 避免此問題,使用合格的tbl_name。*參考

    SELECT AVG(score), t1.* FROM t1 ...

+0

我沒有錯過在文檔中該行,但仍驚喜列的順序做了錯誤。既然有文件記錄,我們必須忍受那個:)謝謝你提供的信息。 – 2015-04-01 06:36:11

+0

不客氣。我也相信SQL標準不允許其他任何東西,但如果使用了,所以MySQL在這裏更加靈活。 – matino 2015-04-01 06:38:05