sql - 如何删除相邻的重复行?
问题描述
Orange
Orange
Orange
Apple
Apple
Apple
Orange
Orange
Grapes
Grapes
我想删除彼此相邻的任何相同值,而不是所有值。结果应该是
Orange
Apple
Orange
Grapes
这里橙色重复,但它来自不同的部分。所以这很好。我没有任何其他支撑柱来进行分区。如何在 sql server 中执行此操作
解决方案
SQL 表表示无序集。让我假设您的数据有一个指定排序的列。
在这种情况下,您可以使用lag()
:
select t.*
from (select t.*,
lag(col) over (order by ordering_col) as prev_col
from t
) t
where prev_col is null or prev_col <> col;
如果要删除行,可以使用:
with todelete as (
select t.*,
lag(col) over (order by ordering_col) as prev_col
from t
)
delete from todelete
where prev_col = col;
推荐阅读
- python - tensorly.kruskal_to_tensor() 方法解释
- angular - Angular - 使用 Pairwise 运算符测试 Observable
- libvlc - 禁用登录 libvlc api
- python - PySide:除了它发送的 exitCode 之外,我如何将其他参数传递给连接到 QProcess 完成信号的插槽?
- excel - Excel 2016 32 位宏在 Excel 2016 64 位上引发宏错误 - 已尝试 PtrSafe(以下两个代码)
- python - BertForSequenceClassification 是否在 CLS 向量上进行分类?
- vim - Vim 跨目录搜索文件或目录
- git - 恢复已删除的 Commit
- python - 无法使用合并数据框中的密钥
- google-translate - 如何使用谷歌翻译按钮仅转换为特定语言?