使用GROUP_CONCAT()
时我在这里堆栈。
UPDATE db SET Video = 'YES'
WHERE markedAS IN (SELECT GROUP_CONCAT(markedAS SEPARATOR ',') from (sub-query));
当我运行 (子查询
) 时,它给出的结果类似于 (Bob,
John,
Rob,
汤姆,
戴夫)
但问题是,它不以 '
QUOTE 开头,也不以 '
QUOTE 结束。这就是它不更新的原因。
正如我们所知,就像这个 SQL 一样它可以工作;
UPDATE staff
SET salary = 1200
WHERE name IN ('Bob', 'Jane', 'Frank', 'Susan', 'John');
我的意思是每个名字两边都有单引号,它有效。
当我在获取这些子查询结果并使用更新 SQL 代码运行它们后尝试手动更新时,它起作用了。
我的问题是:如何才能获得这些 GROUP_CONCAT() 结果,其中单引号符号在前,单符号在最后?
例如我想要这样; ('鲍勃'、'约翰'、'罗布'、'汤姆'、'戴夫'
)
但不像这个; (鲍勃'、'约翰'、'罗布'、'汤姆'、'戴夫
)
谢谢!
最佳答案
你可以这样做:
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));
关于mysql - MySQL GROUP_CONCAT() 中的多次更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832132/