2013-05-21 32 views
0

我有查詢:如何使查詢具有唯一性?

SELECT TOP 20 f.id_service AS f_id_service, 
       f.id_city AS f_id_city, 
       f.name  AS f_name, 
       f.address AS f_address, 
       f.business AS f_business, 
       f.web  AS f_web, 
       f.phone  AS f_phone, 
       f.id_firm AS f_id_firm 
FROM Firm f 
     LEFT JOIN Price p 
     ON p.id_service = f.id_service 
      AND p.id_city = f.id_city 
      AND p.id_firm = f.id_firm 
WHERE f.name NOT IN (SELECT DISTINCT TOP 20 f.name 
         FROM Firm f 
         WHERE f.blocked = '0' 
          AND (f.name LIKE 'АВТО%' 
            OR f.phone LIKE 'АВТО%') 
          AND (f.phone != '' 
            OR f.address != '') 
          AND f.id_city = '73041' 
         ORDER BY f.name ASC) 
     AND f.dogovor = '1' 
     AND f.blocked = '0' 
     AND (f.name LIKE 'АВТО%' 
       OR f.phone LIKE 'АВТО%') 
     AND (f.phone != '' 
       OR f.address != '') 
     AND f.id_city = '73041 

請告訴我如何使這個查詢只選擇唯一f.name?

+0

都開始在'Firm'表中是唯一的'name'值?如果它們是,那麼它必須是產生重複項的連接。你需要加入嗎?看起來你並沒有這樣做:你沒有從'價格'中選擇任何東西,或者在任何列上進行篩選。所以只是擺脫它。如果情況並非如此(即重複內容來自「Firm」本身),請詳細說明。 –

回答

4

改變選擇這個

SELECT DISTINCT TOP 20 
    f.name as f_name 
FROM ... 

你不能讓所有字段的值但不同的只是其中之一:它沒有任何意義。

1

使用DISTINCT關鍵字:

SELECT DISTINCT 
TOP 20 
f.id_service as f_id_service, 
f.id_city as f_id_city, 
f.name as f_name, 
f.address as f_address, 
f.business as f_business, 
f.web as f_web, 
f.phone as f_phone, 
f.id_firm as f_id_firm FROM Firm f 
left join Price p on p.id_service=f.id_service 
AND p.id_city=f.id_city AND p.id_firm=f.id_firm 
WHERE 
f.name NOT IN (
SELECT DISTINCT TOP 20 f.name FROM Firm f 
WHERE f.blocked='0' 
AND (f.name LIKE 'АВТО%' OR f.phone LIKE 'АВТО%') 
AND (f.phone !='' OR f.address != '') AND f.id_city='73041' 
ORDER BY f.name ASC) AND f.dogovor='1' 
AND f.blocked='0' AND (f.name LIKE 'АВТО%' OR f.phone LIKE 'АВТО%') 
AND (f.phone !='' OR f.address != '') 
AND f.id_city='73041' 

因爲所有的列從一個表中,除非namefirm表獨一無二的,你不能使用DISTINCT這樣。您需要決定在重複的情況下顯示哪家公司,然後製作一個複雜的查詢來實現這一點。

3

試試這個

SELECT DISTINCT 
TOP 20 
f.id_service as f_id_service, 
f.id_city as f_id_city, 
f.name as f_name, 
f.address as f_address, 
f.business as f_business, 
f.web as f_web, 
相關問題