2012-11-25 79 views
26

下面的查詢工作正常使用MySQL:的毗連字符串來選擇的MySQL

SELECT concat(title,'/') FROM `socials` WHERE 1 

它的毗連/所選擇的標題字段。

然而,當我試圖做到以下幾點:

SELECT concat(*,'/') FROM `socials` WHERE 1 

它返回follwoing錯誤:

#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near '*,'/') FROM `socials` WHERE 1 LIMIT 0, 30' at line 1 

那麼,有沒有辦法讓這樣的SQL查詢與MySQL工作

+0

不,這不能在一個普通的選擇。你可以使用存儲過程嗎? – rene

+1

沒有使用存儲過程不是我的選擇。 – SaidbakR

回答

34

你根本無法在SQL中做到這一點。你必須明確地列出字段和Concat的每一個:

SELECT CONCAT(field1, '/'), CONCAT(field2, '/'), ... FROM `socials` WHERE 1 

如果您正在使用的應用程序,你可以使用SQL讀取列名,然後使用你的應用程序構造查詢像上面。看到這個計算器的問題找到列名:Get table column names in mysql?

+0

謝謝大家,但這個答案中最明顯的方面是獲得正確的答案,正在展示如何實現選擇多個領域。 – SaidbakR

+1

@sємsєм,你可以手動列出它們(或者,如果你正在使用應用程序,你可以使用SQL來讀取列,然後使用你的應用程序來構建一個類似於上面的查詢)。 –

2

您不能將多個字段連接到一個字符串。您需要選擇全部的字段(*)。

1

你不能在多個領域做到這一點。您還可以查找this

20

如果你想使用來連接字段/作爲分隔符,你可以使用concat_ws

select concat_ws('/', col1, col2, col3) from mytable 

你無法逃避查詢列出列雖然。 * -syntax僅在「select * from」中起作用。您可以列出列並動態構建查詢。