Конкат строки для SELECT * MySql
Следующий запрос отлично работает с MySQL:
SELECT concat(title,'/') FROM `socials` WHERE 1
Это Concat / для выбранного поля заголовка.
Однако, когда я пытаюсь сделать следующее:
SELECT concat(*,'/') FROM `socials` WHERE 1
Он возвращает следующую ошибку:
#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
Ответы
Ответ 1
Вы просто не можете сделать это в SQL. Вы должны явно указать поля и concat каждый из них:
SELECT CONCAT(field1, '/'), CONCAT(field2, '/'), ... FROM `socials` WHERE 1
Если вы используете приложение, вы можете использовать SQL для чтения имен столбцов, а затем использовать свое приложение для построения запроса, как описано выше. См. Этот вопрос stackoverflow, чтобы найти имена столбцов: Получить имена столбцов таблицы в mysql?
Ответ 2
Если вы хотите объединить поля, используя/в качестве разделителя, вы можете использовать concat_ws
:
select concat_ws('/', col1, col2, col3) from mytable
Вы не можете избежать перечисления столбцов в запросе. * -syntax работает только в "select * from". Вы можете перечислить столбцы и построить запрос динамически.
Ответ 3
Вы не можете объединить несколько полей со строкой. Вам нужно выбрать инкремент поля всех (*
).
Ответ 4
Вы не можете сделать это на нескольких полях. Вы также можете найти this.