oracle中查询中单表多字段去重,怎么实现?
发布网友
发布时间:2022-04-24 19:28
我来回答
共5个回答
热心网友
时间:2022-04-07 22:08
select t.a,t.b,t.c from
(select a,b,c from 表A group by a,b,c) t
没用到什么函数,就一个group by ,是用来去重的,
你可以把括号里的先执行,看下结果,外边就是一个从括号里再选出a,b两个字段
热心网友
时间:2022-04-07 23:26
其实思路就是你的过程:
1. 首先去重(用distinct)
select distinct a,b,c from 表A
2. 然后查出a、b列(子查询)
select a,b from (select distinct a,b,c from 表A) test
或者更简单的(用group by),可以试试,我不确定。
select a,b
from 表A
group by a,b,c
热心网友
时间:2022-04-08 01:00
CREATE TABLE #test (
A INT,
B INT,
C INT,
D INT
);
GO
INSERT INTO #test VALUES(1,2,3,4);
INSERT INTO #test VALUES(2,2,3,4);
INSERT INTO #test VALUES(1,2,4,3);
INSERT INTO #test VALUES(1,2,3,4);
GO
-- 如果对排序没有要求的话。
SELECT
A, B
FROM
(
SELECT
DISTINCT A,B,C,D
FROM
#test
) subQuery
go
A B
----------- -----------
1 2
1 2
2 2
(3 行受影响)
追问那如果我想取的字段是D,条件是A,B,C不重复,怎么办。
追答SELECT
MAX(D)
FROM
#test main
GROUP BY
A,B,C;
GO
-----------
4
3
4
(3 行受影响)
热心网友
时间:2022-04-08 02:52
把字段加起来去重复呢? distinct(A||B||C)
热心网友
时间:2022-04-08 05:00
用distinct去除重复