mysql:超简单的 标记删除 or 伪删除的实现方法

本文介绍了一种简单的伪删除方法,通过在数据库中增加一个标记字段来实现数据的隐藏而非真正删除,便于日后可能的数据恢复。

有时候一些重要数据不能直接删除,只能伪删除,因为以后还得使用呢,

伪删除怎么实现呢?很简单,

1、做一个标记,类型为INT(2),为1,隐藏,为0 显示!


create table test(
id Int primary key,
name varchar(20),
flag Int(2)
);

insert into test(id,name,flag)values
('001','张三','0'),
('002','李四','0'),
('003','王五','0');


select * from test;



2、删除的时候,就是不是delte 数据了,

而是执行修改:将标记修改为1,然后更新+筛选查询。

update test set flag=1 where id='003';

select * from test where flag=0;




很简单吧→。→



### 删除数据中空评论的实现方法 在处理数据库中的空评论时,通常会涉及两种主要场景:一是通过 SQL 查询直接删除数据库中的空评论;二是通过编程语言(如 Python 或其他脚本语言)读取数据并对空评论进行清理后再保存回数据库。以下是详细的解决方案。 --- #### 方法一:SQL 查询删除空评论 如果目标是直接从数据库中删除空评论,可以使用 `DELETE` 语句配合条件判断来完成。以下是一些常见的情况及其对应的 SQL 实现: - **删除评论为空字符串 (`''`) 的记录**: ```sql DELETE FROM comments_table WHERE comment_content = ''; -- 删除评论内容为空字符串的记录 [^2] ``` - **删除评论为 NULL 的记录**: ```sql DELETE FROM comments_table WHERE comment_content IS NULL; -- 删除评论内容为NULL的记录 [^1] ``` - **综合情况:删除评论为空字符串或 NULL 的记录**: ```sql DELETE FROM comments_table WHERE comment_content = '' OR comment_content IS NULL; -- 综合删除空字符串和NULL值的记录 [^2] ``` 以上查询可以直接作用于指定的 `comments_table` 表,并根据实际情况调整表名和字段名。 --- #### 方法二:通过编程语言删除空评论 如果需要更灵活的方式,可以在应用层面上先提取数据、清洗后重新写入数据库。以下是一个基于 Python 和 Pandas 库的例子: ```python import pandas as pd from sqlalchemy import create_engine # 创建数据库连接引擎 engine = create_engine('mysql+pymysql://username:password@host/database') # 将数据库中的评论加载到 DataFrame query = "SELECT * FROM comments_table;" df = pd.read_sql(query, engine) # 清理空评论(包括空字符串和 None/NaN) df_cleaned = df[df['comment_content'].notna() & (df['comment_content'] != '')] # 更新数据库中的数据 df_cleaned.to_sql(name='comments_table', con=engine, if_exists='replace', index=False) # 替换原表 [^3] ``` 在这个例子中,`pandas.DataFrame.notna()` 用于筛选非空值,而 `(df['comment_content'] != '')` 则进一步排除了空字符串的内容。 --- #### 方法三:结合 OpenStack 场景下的实例清理思路 如果是类似于 OpenStack 数据库中的复杂场景,可能还需要额外更新关联表的状态。例如,在删除空评论的同时也需要同步修改相关联的信息。以下是一个类似的代码示例: ```sql -- 步骤 1:标记空评论为已删除状态 UPDATE comments_table SET deleted_at = NOW(), status = 'DELETED' WHERE comment_content = '' OR comment_content IS NULL; -- 步骤 2:清理关联缓存表(如果有) DELETE FROM comment_cache_table WHERE comment_id IN ( SELECT id FROM comments_table WHERE comment_content = '' OR comment_content IS NULL ); -- 步骤 3:物理删除已被标记的记录(可选) DELETE FROM comments_table WHERE status = 'DELETED'; ``` 这种分步操作能够更好地维护数据一致性[^5]。 --- #### 注意事项 - 在执行任何删除操作之前,建议备份原始数据以防误删。 - 对于大规模数据集,应评估性能影响并考虑分批处理以减少锁表时间。 - 如果涉及到分布式事务或多表联动,需确保所有更改均在一个事务上下文中提交。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值