sql - 无重复的 Oracle SQL 语句
问题描述
我需要编写一个 SQL 语句来返回 2 列,但是这些列中的任何一个都不能重复。例如:
|---------------------|------------------|
| 10 | A |
|---------------------|------------------|
| 11 | B |
|---------------------|------------------|
| 12 | C |
|---------------------|------------------|
| 13 | A | <--- Don't return
|---------------------|------------------|
使用 distinct 不起作用,因为上面突出显示的行是不同的。返回哪个副本也无关紧要。
有谁知道这样做的方法?感觉好像我错过了一些明显的东西。
谢谢。
解决方案
您可以尝试制作行号col2
并获取rn = 1
数据行。
CREATE TABLE T(
col1 int,
col2 varchar(5)
);
insert into t values (10,'A');
insert into t values (11,'B');
insert into t values (12,'C');
insert into t values (13,'A');
查询 1:
SELECT t1.col1,t1.col2
FROM (
SELECT t1.*,ROW_NUMBER() OVER(PARTITION BY col2 ORDER BY col1) rn
FROM T t1
)t1
WHERE t1.rn = 1
结果:
| COL1 | COL2 |
|------|------|
| 10 | A |
| 11 | B |
| 12 | C |
推荐阅读
- java - 动态加载其实现时如何使接口成为仅编译依赖项
- android - 可以添加远程maven库,但是import语句失败
- javascript - 如何让两个不同的文本元素在 Javascript 中的页面上随机移动
- typescript - 为什么 eslint 在 Github Actions 上失败但在本地工作?
- electron - 如何处理电子应用程序中的请求(捕获请求,提供自定义响应)
- python - Alpha Vantage 每日信息调用导入错误
- ios - Swift Firebase - 如何更新多个参考的值?
- python - 关闭程序后单元格值恢复原始状态
- symfony4 - FOSUserBundle 和 Symfony 4.4.2 (lts) 问题
- swift - RGB 到灰度但像素值似乎错误