簡體   English   中英

如何使用oneColumn上的Distinct和表上的Union來獲取所有列?

[英]How to get all columns using Distinct on oneColumn and Union on tables?

我正在使用以下查詢基於以下3個條件從表中獲取唯一記錄數:

Select COUNT(*) FROM (   select distinct(SUBSCRIBER_EMAIL) from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '30000' and '31999'  
    Union   
select distinct(SUBSCRIBER_EMAIL) from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '39813' and '39901'  
    Union   
select distinct(SUBSCRIBER_EMAIL) from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '32000' and '34999'  
) Counts

現在我想要的是:我想獲取這些記錄的所有數據。

我努力了

 Select distinct(SUBSCRIBER_EMAIL), SUBSCRIBER_Id FROM  (select distinct(SUBSCRIBER_EMAIL),SUBSCRIBER_ID from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '30000' and '31999'
  Union    
 select distinct(SUBSCRIBER_EMAIL),SUBSCRIBER_ID from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '39813' and '39901'    
  Union 
 select distinct(SUBSCRIBER_EMAIL),SUBSCRIBER_ID from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '32000' and '34999'    
 ) x 

但是使用此方法我可以獲得所有記錄,這意味着在這種情況下,distinct無法正常工作。

請幫助我如何獲取與其他數據不同的電子郵件地址。

為什么不做這樣的區分:

SELECT distinct * from
(
  Select distinct(SUBSCRIBER_EMAIL), SUBSCRIBER_Id FROM  (select distinct(SUBSCRIBER_EMAIL),SUBSCRIBER_ID from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '30000' and '31999'
  Union    
 select distinct(SUBSCRIBER_EMAIL),SUBSCRIBER_ID from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '39813' and '39901'    
  Union 
 select distinct(SUBSCRIBER_EMAIL),SUBSCRIBER_ID from SUBSCRIBER where SUBSCRIBER_ACTIVE = 1  and SUBSCRIBER_ZIP between '32000' and '34999'    
)

第一個查詢可以是這樣的:

Select COUNT(*) FROM (   
select distinct(SUBSCRIBER_EMAIL) 
from SUBSCRIBER 
where SUBSCRIBER_ACTIVE = 1  
and (SUBSCRIBER_ZIP between '32000' and '34999'   
    OR SUBSCRIBER_ZIP between '30000' and '31999' 
    OR SUBSCRIBER_ZIP between '39813' and '39901')
) Counts

其次...如果您需要所有數據:

SELECT S.*
FROM SUBSCRIBER S
JOIN (   
select distinct(SUBSCRIBER_EMAIL) 
from SUBSCRIBER 
where SUBSCRIBER_ACTIVE = 1  
and (SUBSCRIBER_ZIP between '32000' and '34999'   
    OR SUBSCRIBER_ZIP between '30000' and '31999' 
    OR SUBSCRIBER_ZIP between '39813' and '39901')
) Counts
ON S.SUBSCRIBER_EMAIL = Counts.SUBSCRIBER_EMAIL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM