有三个表 表a 表b 表c
a有一列name 记录姓名
name
李白
李清照
b有一列name 记录了所有男生的姓名
name
李白
c有两列name 记录姓名 另一列isMale 记录是否是男的
name isMale
c目前是空的
请问怎么用sql语句实现对c进行插入得到如下结果
name isMale
李白 1
李清照 0
a有一列name 记录姓名
name
李白
李清照
b有一列name 记录了所有男生的姓名
name
李白
c有两列name 记录姓名 另一列isMale 记录是否是男的
name isMale
c目前是空的
请问怎么用sql语句实现对c进行插入得到如下结果
name isMale
李白 1
李清照 0
INSERT dbo.a
SELECT '李白' UNION ALL SELECT '李清照'CREATE TABLE b([name] VARCHAR(10))
INSERT dbo.b
SELECT '李白'CREATE TABLE c([name] VARCHAR(10),isMale INT)INSERT dbo.c
SELECT [name],1 FROM dbo.b UNION ALL
SELECT [name],0 FROM (SELECT [name] FROM dbo.a EXCEPT SELECT [name] FROM dbo.b)xSELECT * FROM dbo.cDROP TABLE dbo.a,dbo.b,dbo.c
/*
name isMale
---------- -----------
李白 1
李清照 0
*/
--表a
declare @a table (name varchar(6))
insert into @a
select '李白' union all select '李清照'
--表b
declare @b table (name varchar(4))
insert into @b select '李白'
--表c
declare @c table (name varchar(10),isMale int)
--插入表c
insert into @c select a.[name],isnull(col,0) from @a a
left join (select 1 as col,[name] from @b) b on a.name=b.name
--查看表c
select * from @c
/*结果
name isMale
---------- -----------
李白 1
李清照 0
*/
你的思路是先把b中的都显示出来
但是如果想保持a中的顺序要怎么办?
有没有if else的方法
引用就是对你回复吗??你好
你的思路是先把b中的都显示出来
但是如果想保持a中的顺序要怎么办?
有没有if else的方法
这是我想对你说的"declare @isMale bit select a from a if a.name in (select name form b) set @isMale=1 else set @isMale=0"
这是一个错误的。。我不怎么会sql思路都是c一样的求更正
你好 我把你的sql把b中的李白改成李清照就不行了肿么回事儿
"declare @isMale int set @isMale=1 select name,@isMale from a where name in (select name from b) set @isMale=1 else set @isMale=0"
各种错 求指正
insert c
select a.name,case when b.name is null then 0 else 1 end
from a left join b on a.name=b.name
create table #A([name] nvarchar(10))
insert #A
select '李白' union all
select '李清照'create table #B([name] nvarchar(10))
insert #B
select '李白'create table #C([name] nvarchar(10),IsMale int)insert #C
select [name],(case when exists(select 1 from #B as b where b.[name]=a.[name]) then 1 else 0 end) from #A as a