当前位置:  开发笔记 > 后端 > 正文

使用where子句删除MySQL行

如何解决《使用where子句删除MySQL行》经验,为你挑选了1个好方法。

我正在尝试根据某些文件删除重复的行.当我运行以下查询时:

delete
    from slowmo_vid as sv1, slowmo_vid as sv2
    where sv1.video_id = '2luh6g3ni5ex'
    and sv1.slowmo_end_t<=sv2.slowmo_end_t;

我收到错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as sv1, slowmo_vid as sv2
where sv1.video_id = '2luh6g3ni5ex'
and sv1.slowmo_end' at line 2

表的字段是:id,video_id internal_uri,slowmo_end_t



1> Tim Biegelei..:

您似乎试图在DELETE语句中进行ANSI-92样式的内部联接.但该WHERE子句不能同时用于强制连接并对结果集强制执行限制.相反,请执行以下操作INNER JOIN以删除所需的记录.请注意,很明显该WHERE条款正在扮演什么角色.

更新:如果要删除包含max的记录以外的所有记录,video_id则可以在WHERE子句中添加嵌套子查询.

DELETE sv1.*
FROM slowmo_vid sv1
INNER JOIN slowmo_vid sv2 ON sv1.slowmo_end_t <= sv2.slowmo_end_t
WHERE sv1.video_id = '2luh6g3ni5ex' AND
    sv1.video_id <> (SELECT x.id
                     FROM (SELECT MAX(t.video_id) AS id 
                             FROM slowmo_vid t) x)

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有