如何在SELECT语句中移除特定ID值的同值重复行?
解决方案:精准排除指定ID相等的行
嘿,我来帮你搞定这个需求!既然不能直接用ID1 <> ID2的条件,那我们可以换个思路:保留那些要么ID1和ID2不相等,要么即使相等但不在你指定的数值列表(11、13)里的行。这样就能精准排除掉你不想留的那些行,同时不会误删其他ID相等但不在列表里的行(如果有的话)。
下面针对几种常用的工具场景给出具体实现:
1. SQL 数据库处理
如果是在数据库中查询,直接用NOT包裹复合条件即可:
SELECT * FROM your_table_name WHERE NOT (ID1 = ID2 AND ID1 IN (11, 13));
这个条件的逻辑是:排除所有满足「ID1和ID2相等,并且ID1的值是11或13」的行,剩下的就是你需要的数据。
2. Python Pandas 处理DataFrame
如果用Pandas分析表格数据,可以这样写过滤逻辑:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'ID1': [10, 11, 12, 13], 'ID2': [43, 11, 45, 13] }) # 应用过滤条件:取反(ID1=ID2 且 ID1在指定列表)的结果 filtered_df = df[~((df['ID1'] == df['ID2']) & df['ID1'].isin([11, 13]))] print(filtered_df)
运行后输出的结果会自动排除第2、4行:
ID1 ID2 0 10 43 2 12 45
3. Excel 表格处理
要是用Excel手动处理,可以添加一个辅助列(比如C列),在C2单元格输入以下公式,然后下拉填充:
=NOT(AND(A2=B2, OR(A2=11, A2=13)))
之后筛选C列为TRUE的行,就是你需要保留的数据。
内容的提问来源于stack exchange,提问作者Maf Pipo
相关产品推荐
相关产品推荐

