使用连接选择distinct

时间:2014-05-08 14:54:19

标签: sql oracle

我有一个选择返回10个相同的行,即:

select distinct name from usernames where lastname='Ben';

我只关心不同的值,所以我添加了不同的。现在我将这个查询与另一个查询连接起来并仍然得到不同的值,所以我做了类似的事情:

select frd.value,
        frd.date,
        frd.loc_id,
        frd.loc_type
        (CASE distinct usr.name
            WHEN 'Alen' THEN 'Nice name'
            ELSE 'N/A' 
          END ) name
from usernames usr,
     friends    frd
where usr.lastname='Ben'
  and frd.id <20
  and frd.street<=10
  and frd.type='GOOD'
  and frd.loc_id=usr.loc_id;

我的问题是关于:

(CASE distinct usr.name
    WHEN 'Alen' THEN 'Nice name'
    ELSE 'N/A' 
 END ) name

我可以优化这部分吗?

1 个答案:

答案 0 :(得分:-1)

试试这个:

    select frd.value,
            frd.date,
            frd.loc_id,
            frd.loc_type,
             usr.name
from friends as frd inner join (SELECT distinct (CASE usr.name
    WHEN 'Alen' THEN 'Nice name'
    ELSE 'N/A' 
 END, loc_ID from user) usr
ON frd.loc_ID = usr.loc_ID
    where usr.lastname='Ben'
      and frd.id <20
      and frd.street<=10
      and frd.type='GOOD'

抱歉,我搞乱了连接语法,因此更容易阅读。