判断表A中的值是否在表B中存在

dsfsdfdsfsdfsdfds 2013-10-13 04:35:05

tableA:
id keyword
1 foo
2 bar
3 qux
4 baz
...

tableB:
id keyword
1 foo
2 bar
3 bar
4 qux
5 qux
6 bar
7 foo
...


需求:
判断tableA中的keyword是否在tableB中存在,若存在,将此项标记为Y,否则,标记为N
主要的难点在于:
判断后怎么才能在输出的新表中做标记, 即:存在--Y,不存在--N
...全文
298 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsfsdfdsfsdfsdfds 2013-10-18
  • 打赏
  • 举报
回复
引用 9 楼 OrchidCat 的回复:
[quote=引用 楼主 u010441666 的回复:]
tableA:
id  keyword
1    foo
2    bar
3    qux
4    baz
...

tableB:
id   keyword
1     foo
2     bar
3     bar
4     qux
5     qux
6     bar
7     foo
...
需求: 判断tableA中的keyword是否在tableB中存在,若存在,将此项标记为Y,否则,标记为N; 主要的难点在于: 判断后怎么才能在输出的新表中做标记, 即:存在--Y,不存在--N
--存在与否的判断
CASE WHEN EXISTS(SELECT 1 FROM tableB B WHERE A.keyword = b.keyword) THEN 'Y' ELSE 'N' END
[/quote] 谢谢!
Mr_Nice 2013-10-14
  • 打赏
  • 举报
回复
引用 楼主 u010441666 的回复:
tableA:
id  keyword
1    foo
2    bar
3    qux
4    baz
...

tableB:
id   keyword
1     foo
2     bar
3     bar
4     qux
5     qux
6     bar
7     foo
...
需求: 判断tableA中的keyword是否在tableB中存在,若存在,将此项标记为Y,否则,标记为N; 主要的难点在于: 判断后怎么才能在输出的新表中做标记, 即:存在--Y,不存在--N
--存在与否的判断
CASE WHEN EXISTS(SELECT 1 FROM tableB B WHERE A.keyword = b.keyword) THEN 'Y' ELSE 'N' END
zbdzjx 2013-10-14
  • 打赏
  • 举报
回复
select a.*,标记=case when isnull(b.keyword,'')<>'' then 'Y' else 'N' end
from tableA a
left join (select distinct keyword from tableB) b on a.keyword=b.keyword
LongRui888 2013-10-13
  • 打赏
  • 举报
回复

select distinct
       T1.CampaignId, 
       T1.SearchWord,
       
       case when t2.KeyWord is not null 
                 and t2.CampaignId IS not null
                 then 'Y' 
            else 'N' 
       end as ExistsOrNot, 
       
       OccurenceNumber
       
from @tblSumCampSearchWords as T1
left join @tblCampKeyWords as T2
       on T1.SearchWord = T2.KeyWord 
          and T1.CampaignId = T2.CampaignId
dsfsdfdsfsdfsdfds 2013-10-13
  • 打赏
  • 举报
回复
引用 3 楼 hdhai9451 的回复:
上面是你的测试数据吗?给点真实数据才好解决问题
看我5楼的回复。
Andy__Huang 2013-10-13
  • 打赏
  • 举报
回复
上面是你的测试数据吗?给点真实数据才好解决问题
dsfsdfdsfsdfsdfds 2013-10-13
  • 打赏
  • 举报
回复
引用 1 楼 hdhai9451 的回复:
[code=sql]select a.*,标记=case when isnull(b.keyword,'')<>'' then 'Y' else 'N' end from tableA a left join tableB b on a.keyword=b.keyword
这样是不对的。会有多判。 i.e, --cross join: t1.keyword t2.keyword t1.id t2.id a a 1 1 a b 1 2 a c 1 3 b a 2 1 b b 2 2 b c 2 3 --left outer join: t1.keyword t2.keyword t1.id t2.id a a 1 1 null b 1 2 null c 1 3 null a 2 1 b b 2 2 null c 2 3 [/code] 不知我的分析对不?
Andy__Huang 2013-10-13
  • 打赏
  • 举报
回复
select a.*,标记=case when isnull(b.keyword,'')<>'' then 'Y' else 'N' end
from tableA a
left join tableB b on a.keyword=b.keyword

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧