我有一张表A
id          fatherID          name
1              0              父亲1
2              0              父亲2
3              0              父亲3
4              0              父亲4
5              0              父亲5
6              2              儿子1
7              2              儿子2
8              3              儿子3
9              3              儿子4
10             5              儿子5我现在输入三个信息 "儿子2" ,"儿子5" ,"儿子8"
然后又输入两个信息 "父亲1" ,"父亲2"我想通过一条sql语句来获取第一次输入的信息所对应的fatherID与第二次输入的信息所对应的id相同的个数;
例如我以上输入的信息得到的结果应该是 1 
(就代表第一次输入的“儿子”中有一个是第二次输入“父亲”其中一个的)

解决方案 »

  1.   

    SELECT COUNT(1) FROM A T1
    INNER JOIN A T2 ON T1.[NAME] IN ( "儿子2" ,"儿子5" ,"儿子8")
    AND T2.NAME IN ("父亲1" ,"父亲2")
    AND T1.fatherID=T2.ID
      

  2.   


    if object_id('tb')is not null drop table tb
    go
    create table tb(id int, fatherID int, name  nvarchar(20))
    insert tb select   
    1,              0  ,            '父亲1' union all select
    2 ,             0        ,      '父亲2' union all select
    3  ,            0       ,       '父亲3' union all select
    4   ,           0      ,        '父亲4' union all select
    5    ,          0     ,         '父亲5' union all select
    6     ,         2    ,          '儿子1' union all select
    7      ,        2   ,           '儿子2' union all select
    8       ,       3  ,            '儿子3' union all select
    9        ,      3 ,             '儿子4' union all select
    10        ,     5,              '儿子5' SELECT COUNT(*) FROM(
    select fatherID FROM TB WHERE CHARINDEX(NAME,'儿子2 ,儿子5,儿子8')>0
    )A,(
    select ID FROM TB WHERE CHARINDEX(NAME,'父亲1 ,父亲2')>0
    )B
    WHERE A.FATHERID=B.ID-----------
    1(1 行受影响)
      

  3.   


    IF OBJECT_ID('A') IS NOT NULL DROP TABLE A
    GO
    CREATE TABLE A(
    ID INT,
    FATHERID INT,
    [NAME] VARCHAR(50)
    )
    INSERT INTO A
    SELECT 1,              0,              '父亲1' UNION ALL
    SELECT 2,              0,              '父亲2' UNION ALL 
    SELECT 3,              0,              '父亲3' UNION ALL 
    SELECT 4,              0,              '父亲4' UNION ALL 
    SELECT 5,              0,              '父亲5' UNION ALL 
    SELECT 6,              2,              '儿子1' UNION ALL 
    SELECT 7,              2,              '儿子2' UNION ALL 
    SELECT 8,              3,              '儿子3' UNION ALL 
    SELECT 9,              3,              '儿子4' UNION ALL 
    SELECT 10,            5,              '儿子5'SELECT COUNT(DISTINCT T1.ID) FROM A T1
    INNER JOIN A T2 ON T1.[NAME] IN ( '儿子2','儿子5' ,'儿子8')
    AND T2.NAME IN ('父亲1' ,'父亲2')
    AND T1.fatherID=T2.ID --1