有三个表 表a 表b 表c
a有一列name 记录姓名
name
李白
李清照
b有一列name 记录了所有男生的姓名
name
李白
c有两列name 记录姓名   另一列isMale 记录是否是男的
name   isMale
c目前是空的
请问怎么用sql语句实现对c进行插入得到如下结果
name   isMale
李白     1
李清照   0

解决方案 »

  1.   

    CREATE TABLE a([name] VARCHAR(10))
    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
    */
      

  2.   


    --表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
    */
      

  3.   

    你好 
    你的思路是先把b中的都显示出来
    但是如果想保持a中的顺序要怎么办?
    有没有if else的方法
      

  4.   


    引用就是对你回复吗??你好 
    你的思路是先把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一样的求更正
      

  5.   


    你好 我把你的sql把b中的李白改成李清照就不行了肿么回事儿
      

  6.   


    "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"
    各种错  求指正
      

  7.   


    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
      

  8.   


    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