[英]Multiple Updates in MySQL GROUP_CONCAT()
使用GROUP_CONCAT()
时,我在这里堆叠。
UPDATE db SET Video = 'YES'
WHERE markedAS IN (SELECT GROUP_CONCAT(markedAS SEPARATOR ',') from (sub-query));
当我运行( sub-query
)时,它给我的结果是(Bob ,
John ,
Rob ,
Tom ,
Dave)
但事情是,它并没有开始与'
报价和与不结束'
的报价。 那就是为什么它不更新。
众所周知,像这样的一个SQL可以工作;
UPDATE staff
SET salary = 1200
WHERE name IN ('Bob', 'Jane', 'Frank', 'Susan', 'John');
我的意思是每个名字都用单引号引起来,这是可行的。
当我在获取那些子查询结果并使用更新SQL代码运行它们之后尝试进行手动更新时,它可以工作。
我的问题是:我怎样才能得到那些GROUP_CONCAT()结果与第一个单引号符号和最后一个单个符号在一起?
例如我想要这样; ( 'Bob','John','Rob','Tom','Dave'
)
但不喜欢这个 ( Bob','John','Rob','Tom','Dave
( Bob','John','Rob','Tom','Dave
( Bob','John','Rob','Tom','Dave
))
谢谢!
您可以做到这一点:
UPDATE db SET Video = 'YES'
WHERE (SELECT concat(',',GROUP_CONCAT(markedAS SEPARATOR ','),',') from (sub-query))
like concat('%,',markedAS,',%);
或使用find_in_set()
UPDATE db SET Video = 'YES'
WHERE find_in_set(markedAS,(SELECT concat(',',GROUP_CONCAT(markedAS SEPARATOR ','),',') from (sub-query)));
尽管实际上不需要使用GROUP_CONCAT
UPDATE db SET Video = 'YES'
WHERE markedAS in (SELECT markedAS from (sub-query));
如果没有错字,则此未经测试的代码应该可以工作:
UPDATE db SET Video = 'YES'
WHERE markedAS IN (SELECT GROUP_CONCAT(t.markedASQuoted SEPARATOR ',') from (select concat(concat('\'', markedAS), '\'') as markedASQuoted from sub-query) t);
我正在使用concat函数将引号放在那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.