![](/img/trans.png)
[英]How to get all columns in SQL after using DISTINCT and UNION functions?
[英]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.