各位朋友,小弟数据库有两个表
表1:
ID 组号 组名 简介 合作与否
1 166585057 武汉 武汉精英
2 741012867 湖北 湖北精英
3 790184188 北京 北京精英
4 27751864 广州 广州精英
5 35892497 满门 满门精英
6 42741 从化 从化精英
8 117723147 怀化 怀化精英
9 7412867 湖北 湖北精英
表2:组名 简介
武汉 武汉精英
湖北 湖北精英
想要的2个结果:
1、请问如何写SELECT语句,才能从表1里面选择出组名和简介都存在于表2的记录呢?
想要的结果如下:
ID 组号 组名 简介 合作与否
1 166585057 武汉 武汉精英
2 741012867 湖北 湖北精英
9 7412867 湖北 湖北精英
2、请问如何写UPDATE语句,才能更新表1的“合作与否”字段,条件是组名和简介都存在于表2的记录
想要的结果如下:
ID 组号 组名 简介 合作与否
1 166585057 武汉 武汉精英 合作成功
2 741012867 湖北 湖北精英 合作成功
9 7412867 湖北 湖北精英 合作成功
以上两条问题,诚心向各位大虾赐教,谢谢了!
表1:
ID 组号 组名 简介 合作与否
1 166585057 武汉 武汉精英
2 741012867 湖北 湖北精英
3 790184188 北京 北京精英
4 27751864 广州 广州精英
5 35892497 满门 满门精英
6 42741 从化 从化精英
8 117723147 怀化 怀化精英
9 7412867 湖北 湖北精英
表2:组名 简介
武汉 武汉精英
湖北 湖北精英
想要的2个结果:
1、请问如何写SELECT语句,才能从表1里面选择出组名和简介都存在于表2的记录呢?
想要的结果如下:
ID 组号 组名 简介 合作与否
1 166585057 武汉 武汉精英
2 741012867 湖北 湖北精英
9 7412867 湖北 湖北精英
2、请问如何写UPDATE语句,才能更新表1的“合作与否”字段,条件是组名和简介都存在于表2的记录
想要的结果如下:
ID 组号 组名 简介 合作与否
1 166585057 武汉 武汉精英 合作成功
2 741012867 湖北 湖北精英 合作成功
9 7412867 湖北 湖北精英 合作成功
以上两条问题,诚心向各位大虾赐教,谢谢了!
-- 1
select a.*
from tb1 a join tb2 b on a.组名 = b.组名 and a.简介 = b.简介-- 2
update t
set t.合作与否 = N'合作成功'
from tb1 t join tb2 b on a.组名 = b.组名 and a.简介 = b.简介
declare @表1 table (ID int,组号 int,组名 varchar(4),简介 varchar(8),合作与否 sql_variant)
insert into @表1
select 1,166585057,'武汉','武汉精英',null union all
select 2,741012867,'湖北','湖北精英',null union all
select 3,790184188,'北京','北京精英',null union all
select 4,27751864,'广州','广州精英',null union all
select 5,35892497,'满门','满门精英',null union all
select 6,42741,'从化','从化精英',null union all
select 8,117723147,'怀化','怀化精英',null union all
select 9,7412867,'湖北','湖北精英',nulldeclare @表2 table (组名 varchar(4),简介 varchar(8))
insert into @表2
select '武汉','武汉精英' union all
select '湖北','湖北精英'select a.ID,a.组号,a.组名,a.简介,
'合作成功' as 合作与否 from @表1 a inner join @表2 b on a.简介=b.简介
/*
ID 组号 组名 简介 合作与否
----------- ----------- ---- -------- --------
1 166585057 武汉 武汉精英 合作成功
2 741012867 湖北 湖北精英 合作成功
9 7412867 湖北 湖北精英 合作成功
*/
select * from 表1 a
where exists(select 1 from 表2 where 简介=a.简介 and 组名=a.组名)
---
UPDATE a set 合作与否=(case when exists(select 1 from 表2 where 简介=a.简介 and 组名=a.组名)
then '合作成功' end)
from 表1 a
declare @表1 table (ID int,组号 int,组名 varchar(4),简介 varchar(8),合作与否 sql_variant)
insert into @表1
select 1,166585057,'武汉','武汉精英',null union all
select 2,741012867,'湖北','湖北精英',null union all
select 3,790184188,'北京','北京精英',null union all
select 4,27751864,'广州','广州精英',null union all
select 5,35892497,'满门','满门精英',null union all
select 6,42741,'从化','从化精英',null union all
select 8,117723147,'怀化','怀化精英',null union all
select 9,7412867,'湖北','湖北精英',nulldeclare @表2 table (组名 varchar(4),简介 varchar(8))
insert into @表2
select '武汉','武汉精英' union all
select '湖北','湖北精英'--第一问 查询
select a.ID,a.组号,a.组名,a.简介,
'合作成功' as 合作与否 from @表1 a inner join @表2 b on a.简介=b.简介
/*
ID 组号 组名 简介 合作与否
----------- ----------- ---- -------- --------
1 166585057 武汉 武汉精英 合作成功
2 741012867 湖北 湖北精英 合作成功
9 7412867 湖北 湖北精英 合作成功
*/
--第二问 更新
update @表1 set 合作与否='合作成功'
from @表1 a inner join @表2 b on a.简介=b.简介
select * from @表1/*
ID 组号 组名 简介 合作与否
----------- ----------- ---- -------- ------------------
1 166585057 武汉 武汉精英 合作成功
2 741012867 湖北 湖北精英 合作成功
3 790184188 北京 北京精英 NULL
4 27751864 广州 广州精英 NULL
5 35892497 满门 满门精英 NULL
6 42741 从化 从化精英 NULL
8 117723147 怀化 怀化精英 NULL
9 7412867 湖北 湖北精英 合作成功
*/
select ID, 组号, 组名, 简介, 合作与否
from 表1
where 组名 in(select 组名 from 表2)
and 简介 in(select 简介from 表2)
update 表1
set 合作与否=''
from where 组名 in(select 组名 from 表2)
and 简介 in(select 简介from 表2)