考虑以下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);
您如何阅读此语法?
答案 0 :(得分:5)
单引号字符('
)以字符串开头和结尾。
双管道符号(||
)连接字符串。
根据一些评论||
,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';
而ABCD
,DEFG
...是v.id
的值(即table_2列ID)。
看起来你的select语句用于生成删除语句,而这些语句又必须以某种方式运行。当然,由于缺少WHERE
,这些crated语句不会执行。