如何与查询删除这样与子查询DELETE和LIKE
DELETE FROM tbl
WHERE title LIKE CONCAT((select title from tbl where id = 10),'%')
该查询返回错误
[错误] 1093行 - 你不能指定目标表 '项' 的更新在 FROM子句
如何与查询删除这样与子查询DELETE和LIKE
DELETE FROM tbl
WHERE title LIKE CONCAT((select title from tbl where id = 10),'%')
该查询返回错误
[错误] 1093行 - 你不能指定目标表 '项' 的更新在 FROM子句
DELETE t
FROM
tableX AS t
JOIN
(SELECT CONCAT(title, '%') AS titleL
FROM tableX
WHERE id = 10
) AS ti
ON t.title LIKE ti.titleL
这将工作。 – 2012-03-14 19:45:04
我觉得你刚刚从线,以执行一个选择查询插入另一:
DELETE t1
FROM tbl as t1
WHERE t1.title LIKE CONCAT((select title from tbl as t2 where t2.id = 10),'%')
这与OP的查询不起作用的原因不一样。 – 2012-03-14 19:43:32
这不起作用。它会给出完全相同的错误。 – 2012-03-14 19:45:36
更新了查询,忘记了这个事情,这比加入 – ntziolis 2012-03-14 20:00:34
你需要的东西,如:
DELETE tbl
FROM tbl T1
INNER JOIN (SELECT title FROM tbl WHERE id = 10) T2
ON T1.title LIKE CONCAT(T2.title, '%')
有点简单同样的错误... [错误] 1093 - 您无法在FROM子句中指定目标表'条目'进行更新 – mort 2012-03-14 19:41:39
一个办法来解决这个错误是其拆分成2个独立的语句。
您可以选择要匹配的标题放入用户定义的变量中,然后执行删除操作。
像这样:
SELECT title
INTO @title
FROM tbl
WHERE id = 10;
DELETE FROM tbl
WHERE title LIKE CONCAT(@title,'%');
请注意,在MySQL Workbench中需要用于SELECT查询语法如下: SELECT @title:=标题 FROM TBL WHERE ID = 10; – 2012-03-14 20:08:24
多少值是UR选取[回访..? – Teja 2012-03-14 19:26:31