oracle 多字段去重查詢

2021-09-25 20:39:47 字數 1320 閱讀 8456

需要對錶base_mri_device的compname、fieldstr、version欄位分別進行去重查詢,如何使用乙個sql搞定?

注意:是分別對3個字段進行去重,而不是3個字段聯合去重。

首先,必須進行三次查詢,而將查詢結果進行"行合併"需要用到union或union all;

其次,為了區分查詢結果屬於哪個字段,所以需要3列,

同時,為了保證每次查詢只對乙個字段進行去重查詢,可以將另外2個字段置空。

方式一:使用group by(資料庫通用)

--

對compname、fieldstr、version進行去重查詢

select

*from (select compname, '' fieldstr, ''

version

from

base_mri_device

union

allselect

'' compname, fieldstr, ''

version

from

base_mri_device

union

allselect

'' compname, ''

fieldstr, version

from

base_mri_device)

group

by compname, fieldstr, version

方式二:使用distinct(oracle獨有)

--

對compname、fieldstr、version進行去重查詢

select

distinct compname, '' fieldstr, ''

version

from

base_mri_device

union

allselect

distinct

'' compname, fieldstr, ''

version

from

base_mri_device

union

allselect

distinct

'' compname, ''

fieldstr, version

from base_mri_device

方式一

方式二

distinct多字段去重查詢問題

對於很多初學者來說distinct的單字段去重是很容易理解和使用的,但是有些初學者就會有這樣的疑問,如果distinct放在多個字段前面作用會是怎樣的呢?這裡舉個簡單易懂的例子 多字段去重sql語句 select distinct id,aa,bb from tname 上述語句是查詢欄位id aa...

mysql去重欄位 mysql多字段去重,並計數

問 題 mysql版本5.5.42 有兩個表,表結構與資料如下 1 goods表 create table goods id int 10 unsigned not null,product varchar 180 collate utf8mb4 unicode ci not null,size v...

SQL 部分欄位去重查詢

在要刪除的有重複資料中存在幾種情況 1.存在兩條完全相同的紀錄 這是最簡單的一種情況,用關鍵字distinct就可以去掉。example select distinct from table 表名 where 條件 2.存在部分字段相同的紀錄 有主鍵id即唯一鍵 如果是這種情況的話用distinct...