MySql: использование concat не работает, почему?

У меня такой запрос:

update sales_flat_quote set customer_email = (concat(select substring(md5(rand()) from 1 for 20), '@example.com'));

Это дает мне эту ошибку: 3 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис рядом с "" в строке 6 SQL1.sql 6 1. Я хочу объединить результаты выбора подстроки со строкой static @ example.com.

Что не так с запросом?

Спасибо!


person EOB    schedule 14.05.2012    source источник


Ответы (2)


select substring(md5(rand()) from 1 for 20 возвращает набор результатов, а не строку.

Правильный способ делать то, что вы хотите, - update sales_flat_quote set customer_email = (concat(substring(md5(rand()) from 1 for 20), '@example.com'));

person penartur    schedule 14.05.2012

Чтобы использовать подзапрос, вы должны заключить его в круглые скобки:

update sales_flat_quote set customer_email = concat(
        (select substring(md5(rand()) from 1 for 20)), 
        '@example.com');

Обратите внимание, что в этом случае вам не нужно использовать подзапрос: rand() будет вызываться для каждой строки.

person Joni    schedule 14.05.2012