mysql - MySQL GROUP_CONCAT() 中的多次更新

标签 mysql sql group-concat

使用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/

相关文章:

mysql - 使用group_concat后如何计算以 ','分隔的列的长度

python - 在 SQLAlchemy 中删除约束

java - SQL/Hibernate 标准 - 按故障分组

sql - 在 plpgsql 中动态地写喜欢和不喜欢

Mysql Concat正在显示字节数组

MySQL GROUP_CONCAT 并翻转两行

mysql - 为具有多列的 MYSQL 表建立索引

php - 无法在 MYSQL 中输入土耳其语字符

mysql - 面临 Oracle 中 SELECT DML 更改的问题

sql - 如何搜索包含JSON数组的SQL列