Возможно ли иметь что-то вроде этого:
ВЫБЕРИТЕ c.id как id
С каналов c
LEFT JOIN CONCAT (‘привет _’, c.id)
Мне нужен этот конкат с c.id. НЕТ ДРУГОГО ПУТИ.
Так какие-нибудь советы?
Вы спросили, можете ли вы использовать выражение, включающее значения столбцов и функции, такие как CONCAT, для генерации имен таблиц в запросах в MySQL.
Краткий ответ: нет.
Есть более длинный ответ, включающий подготовленные MySQL заявления. Это в основном способ использования строковой обработки в хранимой процедуре MySQL для генерации текста запроса для запуска.
Если вы собираетесь сделать это на уровне SQL: это невозможно. Токены имен таблиц не вычисляются из выражений.
Однако, с php и динамическим созданием запроса, должно быть достаточно просто использовать «модифицированное» имя таблицы в соответствии с вашими потребностями.
Так что ваши concat()
должен быть выражением php при построении запроса.
В случае, когда вы пытаетесь объединить (другую) таблицу на основе значения столбца базовой таблицы, вы далеки от любой семантики SQL.
В этом случае вы можете изменить схему, чтобы объединить все экземпляры таблиц, идентифицированные тем, что ваш concat сейчас пытается вычислить, для информации одной таблицы и пометить каждую строку с помощью логический стол, к которому он принадлежит.