sql - 如何根据特定列选择重复项
问题描述
我想根据两列计算不同的值,并仅根据这些列的不同值复制清理后的表。
原始表有 5 列。
b_id | col1 | col2 | col3 | col4
1 | c11 | c21 | c31 | c41
2 | c21 | c22 | c23 | c24
3 | c31 | c22 | c23 | c24
4 | c41 | c42 | c44 | c44
4 | c41 | c52 | c53 | c54
6 | c61 | c62 | c63 | c64
6 | c61 | c72 | c73 | c74
7 | c71 | c72 | c73 | c74
我只想选择:
b_id | col1 | col2 | col3 | col4
1 | c11 | c21 | c31 | c41
2 | c21 | c22 | c23 | c24
3 | c31 | c22 | c23 | c24
4 | c41 | c42 | c44 | c44
6 | c61 | c62 | c63 | c64
7 | c71 | c72 | c73 | c74
因为 b_id & col1 有重复。我不介意 col2、col3 和 col4 上是否存在重复项。
我试过这个:
DROP TABLE IF EXISTS
new_table
CREATE TABLE
new_table
AS (
select distinct
b_id
, col1
from
old_table
WHERE
col2 IN (val1, val2, val3, val4)
AND col4 = xxx
);
但这选择了我需要的不同值,但只有这两列而不是其余列...:-/
有任何想法吗?谢谢!
解决方案
这应该可以解决问题:
select distinct b_id, col1,max(col2),max(col3),max(col4)
from old_tables
group by b_id, col1;
(只要您不关心将从 col2-col4 中获取哪个值)
推荐阅读
- windows - 将文件的时间戳与当前时间戳进行比较
- python - 如何为列表中的每个元素分配条件
- python - 使用 numpy.ndarray.ndim(arr) 直接获取维数
- android - JSON对象到字符串数组
- azure - Deploy console app from Azure Devops (cloud version) to a machine with a Microsoft-provided host agent (Failed to create PSDrive with destination...)
- javascript - 无法将复选框值发送到 php
- reporting-services - 一过滤多列SSRS
- c - 没有鼠标的win32,如何将键盘快捷键分配给按钮
- java - 如何在 Webflux 功能端点的测试中禁用 Spring Security
- azure-ad-graph-api - 如何设置获取使用 Graph API 的 Token