MySQL 带条件的 DELETE 查询
我有一个表 PEOPLE,其中包含“firstName”、“lastName”(varchars)和“deleted”(位)列。
我想从此表中删除具有 TRUE 删除属性的条目,但前提是它们与表中另一个单独的条目共享确切的名字和姓氏。
换句话说,从表中删除“已删除”人员,但前提是他们是重复的。
不知道如何做到这一点,尤其是不知道如何快速做到这一点。如有任何帮助,我们将不胜感激,谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的表具有唯一的主键(...将取决于设计...),那么这是需要计算条目出现次数的可行替代方案:
这可能比计算行具有稍好的性能。请注意,此查询可能会遇到与上一个答案中存在的相同问题;具体来说,如果有两个或多个“已删除”行,并且没有“未删除”行,则它们都可能会被删除(留下任何行!)。如果查询的目的只是在存在“未删除”等效行时删除“已删除”行,请添加
AND B.deleted = 0
作为内部WHERE< 的一部分/代码> 子句。
If your table has a unique primary key (... will depend on design...), then this is a viable alternative to needing to count the occurrances of entries:
This may have slightly better performance than counting rows. Please note that this query will likely suffer the same possible issue present in the previous answer; specifically, if there are two or more 'deleted' rows, and no 'non-deleted', both of them will probably be removed (leaving you with no rows!). If the intent of the query is only to remove 'deleted' rows when there is a 'non-deleted' equivalent row, add
AND B.deleted = 0
as part of the innerWHERE
clause.这是执行此操作的基本方法:
http://www.justin-cook.com/wp/2006/12/12/remove-duplicate-entries-rows-a-mysql-database-table/
基本上:
1. 使用
GROUP BY
创建一个新表。2.删除旧表。
3. 重命名新表。
Here is a rudimentary way of doing it:
http://www.justin-cook.com/wp/2006/12/12/remove-duplicate-entries-rows-a-mysql-database-table/
Basically:
1. Create a new table with
GROUP BY
.2. Delete old table.
3. Rename new table.