2013-05-21 35 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, 
相关问题