Я следующий запрос, который работает отлично:SQL Заменить в выберите с левой присоединиться к
SELECT 'User ID' AS 'uid',
'E-Mail' AS 'email',
'Reason' AS 'reason'
UNION ALL
SELECT a.subid AS 'uid',
a.email AS 'email',
b.data AS 'reason'
FROM sms7l_subscriber a
LEFT JOIN sms7l_history b ON a.subid = b.subid
WHERE (a.confirmed = 0
OR a.enabled = 0
OR a.accept = 0)
AND b.action = unsubscribed
Теперь я хочу сделать некоторые строки замены на b.data непосредственно ... она содержит довольно некрасиво, чтобы прочитать строку например - «REASON::UNSUB_SURVEY_FREQUENT REASON::UNSUB_SURVEY_IRRELEVANT REASON::Some text from textfield
»
Я хочу заменить «REASON::
» с «Reason:
» и а также заменить «UNSUB_SURVEY_FREQUENT
» с по строке и т.д., мне нужно сделать около 4-5 строк замен все на «b.data»
Я попытался следующие:
SELECT 'User ID' AS 'uid',
'E-Mail' AS 'email',
'Reason' AS 'reason'
UNION ALL
SELECT a.subid AS 'uid' , a.email AS 'email',
REPLACE (b.data,
'REASON::',
'Reason: ') AS 'reason'
FROM sms7l_subscriber a
LEFT JOIN sms7l_history b ON a.subid = b.subid
WHERE (a.confirmed = 0
OR a.enabled = 0
OR a.accept = 0)
AND b.action = unsubscribed
Но это не работает. К сожалению, я должен сделать это в одном запросе, и он должен содержать замены. Любые подсказки о том, как правильно обернуть команду replace, будут отличными.
Обновление: Благодарим вас за вход. Вот некоторая дополнительная информация, которую я упустил, чтобы упомянуть, что могло вызвать некоторую путаницу: Это база данных MySQL, и я не хочу фактически заменять строки в самой базе данных или создавать новую таблицу - я хочу только заменить строки в результат запроса. Причина этого: есть очень удобный инструмент для cms, который я использую, что позволяет мне отображать результат запроса mysql в красиво сформированную таблицу html (она сортируется, доступна для поиска и т. Д.). К сожалению, я могу использовать только один запрос, и я не могу вызывать дальнейшие процедуры для форматирования результата запроса. Первая строка результата может быть задана как заголовок и, следовательно, оператор union all в начале моего запроса. Поскольку я хочу, чтобы таблица была легко читаемой, я хочу заменить (перевести) строки на «b.data». Например. вместо «REASON :: UNSUB_SURVEY_IRRELEVANT» Я хочу иметь «Причина: содержание информационного бюллетеня больше меня не интересует» ... «ПРИЧИНА :: UNSUB_SURVEY_FREQUENT» должно быть соответствующим образом переведено ...
Я надеялся, что даже если SQL-запрос становится довольно запутанным в конце концов, это спасет меня, чтобы написать правильный модуль для моих cms.
Сообщение об ошибке:
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... (and than comes the query string).
(Спасибо за изменения формата в запросе SQL - гораздо лучше читать сейчас).
что это не значит? –
что RDBS? Microsoft SQL Server, Postgres, Oracle ....? –
Вы сказали _ «Мне нужно сделать около 4-5 замену строк на b.data» _, но есть только один оператор REPLACE, который был показан здесь. Вы можете показать сообщение об ошибке? –