2010-09-01 163 views
3

我很納悶,爲什麼查詢奇怪的MySQL導致

select * from (select * from users join users a) b 

原因Duplicate column name錯誤?內部查詢返回帶有重複列的結果集,後綴爲_1,外部列顯示錶中的列。

+0

爲什麼安全標籤列名? – Bruno 2010-09-01 15:29:26

+0

因爲這可能是在SQL注入中顯示錶中所有列的方式(使用USING) – Fluffy 2010-09-01 15:30:41

+1

不確定我在這裏。當然,即使在考慮將其作爲參數傳遞給它之前,您也應該對輸入進行清理並將其放入適當的引用內(儘管您在此示例中未使用參數)。 – Bruno 2010-09-01 15:48:56

回答

2

這是正確的行爲,因爲子查詢選擇列表中的任何列必須具有唯一名稱(Subqueries in the From Clause)。您還可以檢查here,這是舊版mysql中的一個錯誤,它允許您執行此操作。

0

在子查詢中的列可能有獨特的名稱,以便做到這一點

select a.id, b.id, a.col1, b.col2, b.col3 from (select a.col1, a.id from users join users a) b 

其中id,COL1,COL2,COL3是我由