使用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)
但事实是,它并非以'
QUOTE开头,并且不会以'
QUOTE结束。这就是为什么它没有更新。
我们知道,就像这个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
)
谢谢!
答案 0 :(得分:1)
你可以做到这一点:
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));
答案 1 :(得分:0)
如果没有拼写错误,这个未经测试的代码应该有效:
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函数将引号放在那里。