2012-11-25 8 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 

だから、MySQLので動作するように、このようなSQLクエリを作るためにどのような方法があります

+0

いいえ、それは普通の選択ではできません。ストアドプロシージャを使用できますか? – rene

+1

ストアドプロシージャを使用することは私にとってはオプションではありません。 – SaidbakR

答えて

34

あなたは単にSQLでそれを行うことはできません。あなたは明示的にフィールドと連結各1をリストする必要があります。

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

アプリを使用している場合は、列名を読み、その後、上記のようなクエリを構築するためにあなたのアプリを使用するためにSQLを使用することができます。列名を見つけるには、このstackoverflowの質問を参照してください: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"でのみ動作します。あなたは列をリストし、クエリを動的に構築することができます。