Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从表中选择复杂数据并将其从同一表中删除_Mysql_Mysql Error 1093 - Fatal编程技术网

Mysql 如何从表中选择复杂数据并将其从同一表中删除

Mysql 如何从表中选择复杂数据并将其从同一表中删除,mysql,mysql-error-1093,Mysql,Mysql Error 1093,我有一个反馈表,其中包含用户反馈和根据某个实体的评级。在某些情况下,多个用户对同一实体进行了投票,这是不可取的,并且由于出现故障而进入了系统 表架构有点像这样: qa_id,int(10) //id of the entity score,smallint(1) user_id,int(3) feed_time,datetime 我试图用这个查询删除一个重复条目(幸运的是,只有一个额外的反馈): delete from feedback where md5(qa_id+feed_time) i

我有一个反馈表,其中包含用户反馈和根据某个实体的评级。在某些情况下,多个用户对同一实体进行了投票,这是不可取的,并且由于出现故障而进入了系统

表架构有点像这样:

qa_id,int(10) //id of the entity
score,smallint(1)
user_id,int(3)
feed_time,datetime
我试图用这个查询删除一个重复条目(幸运的是,只有一个额外的反馈):

delete from feedback where md5(qa_id+feed_time) in 
(
    select md5(qa_id+feed_time)from feedback fb
    group by fb.qa_id
    having count(fb.qa_id) > 1
    order by fb.qa_id
    desc
)
它没有说:

Error Code : 1093
You can't specify target table 'feedback' for update in FROM clause
(0 ms taken)
无法从同一个表中选择和删除(即,如果它出现在子查询中)。我在数据库方面没有太多的专业知识,我不允许使用任何编程语言来做同样的事情:(


关于如何仅对查询执行此操作,有什么建议吗?

在MySQL中解决此问题的最简单方法是将子查询放在子查询的附加层中:

delete from feedback
where md5(qa_id+feed_time) in (select *
                               from (select md5(qa_id+feed_time)
                                     from feedback fb
                                     group by fb.qa_id
                                     having count(fb.qa_id) > 1
                                    ) t
                              )

稍后在这条评论中签出链接,它会给你答案。你的表是innodb还是MySIAM?@Yoram我的表是innodb。OK,请检查。因为MySIAM在执行插入、更新或删除等操作时会锁定表。但也不可能这样做,你可以通过签出链接的方式:)@yoramdeLangen!!!现在无法访问该页。。。。我一分钟前就可以这么做了…对不起,是链接中的一个输入错误:哈哈…这是什么魔法!!??愚弄MySQL:D@RickeshJohn . . . 子查询的附加级别强制MySQL实例化表(或者至少让编译器意识到表是实例化的,绕过警告)。