【发布时间】:2018-09-16 08:54:14
【问题描述】:
select tf.id from text_fields as tf WHERE tf.study_id NOT IN (select id from studies)
我正在使用它来查找孤立记录,它工作正常。
但是,当我尝试使用 SET 将结果分配给 var 时,我收到“子查询返回超过 1 行”错误。
SET @text_field_ids := (select tf.id from text_fields as tf WHERE tf.study_id NOT IN (select id from studies))
对于上下文,我想使用 var 来记录 text_fields 记录,例如
DELETE from text_fields WHERE id IN @text_field_ids
顺便说一句,我曾尝试将子查询直接传递给 DELETE,例如:
DELETE from text_fields WHERE id IN (select id from text_fields as tf WHERE tf.study_id NOT IN (select id from studies))
但这会产生错误You can't specify target table 'text_fields' for update in FROM clause,因为显然您不能使用在 WHERE 子句中删除的表。
【问题讨论】:
-
你加“限制”
-
为什么不
DELETE from text_fields WHERE id IN (select tf.id from text_fields as tf WHERE tf.study_id NOT IN (select id from studies)) -
@RehanAzherI 我刚刚为问题添加了解释。
-
@SureshKamrushi
LIMIT给出了同样的错误,我在最后添加它,(... LIMIT 100000)。
标签: mysql