考虑以下sql-query:
SELECT 'delete from TABLE_1 TABLE_1.ID =''' || v.id || ''';'
from TABLE_2 v where v.ID in (select id from TABLE_1);
Run Code Online (Sandbox Code Playgroud)
你怎么看这个语法?
单引号字符(')开始和结束字符串.
双管符号(||)连接字符串.
根据一些评论||,MySQL不提供.
现在,您的语句甚至包含三引号字符(''').这是因为为了在(引用的)字符串中包含单引号字符,它需要被另一个(前面的)单引号字符转义.
所以:'foo'是字符串foo,'bar' || ' ' || baz是字符串bar baz,It''s ok是字符串它没关系.
您的问题中的select语句返回一个结果集,该结果集由一个数据类型为字符串的列组成.这些字符串看起来像这样:
delete from TABLE_1 TABLE_1.ID ='ABCD';
delete from TABLE_1 TABLE_1.ID ='DEFG';
Run Code Online (Sandbox Code Playgroud)
而ABCD,DEFG...是的值v.id(即TABLE_2列ID的).
看起来你的select语句用于生成删除语句,而这些语句又必须以某种方式运行.当然,那些crated语句不会作为WHERE缺失执行.