有一个表 列A,B,C,D
比如:
  A    B    C    D
1234   1    1    1
abcd   2    2    2
12ab   3    3    3
12cd   4    4    4当我查询 WHERE A IN('1234','abcd','1212')
能得到以下的结果
1234   1    1    1
abcd   2    2    2
1212 NULL NULL  NULL按我现在的方法只能得到前面有数据的两行,最后一行没有数据的是不会显示的,有什么方法可以显示吗?

解决方案 »

  1.   

    if object_id('[TB]') is not null drop table [TB]
    go
    create table [TB] (A nvarchar(8),B int,C int,D int)
    insert into [TB]
    select '1234',1,1,1 union all
    select 'abcd',2,2,2 union all
    select '12ab',3,3,3 union all
    select '12cd',4,4,4select * from [TB]DECLARE @i TABLE (NN NVARCHAR(8))   --做个表变量或者临时表处理一下参数即可
    INSERT INTO @i(nn)
    SELECT '1234' UNION ALL SELECT 'abcd' UNION ALL SELECT '1212'
    SELECT A.nn AS A ,b.b,b.c,b.d
    FROM @i A
    LEFT JOIN TB B ON A.nn = B.a/*
    A b c d
    1234 1 1 1
    abcd 2 2 2
    1212 NULL NULL NULL*/
      

  2.   

    select A,B,C,D from tb
     WHERE A IN('1234','abcd','1212')
    UNION ALL SELECT '1212',NULL,NULL,NULL from tb