0

我有这个查询:

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 的 '' 附近使用的正确语法。我想将子字符串选择的结果与静态@example.com 字符串连接起来。

查询有什么问题?

谢谢!

4

2 回答 2

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'));

于 2012-05-14T11:40:12.237 回答
1

要使用子选择,您必须将其括在括号中:

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

请注意,在这种情况下,您不需要使用 subselect:rand()将为每一行调用。

于 2012-05-14T11:47:16.897 回答