告诉我关于sql查询的两个表

时间:2014-04-03 12:04:10

标签: sql sql-server-2008

这是我的数据

       day  room    ids section idt term    years   
        1   1207    400 101 1   te00    1   2557    
        1   1207    400 102 1   te00    1   2557    
        1   1207    400 103 1   te00    1   2557    
        1   1207    400 101 2   te00    1   2557
        1   1207    400 102 2   te00    1   2557
        1   1207    400 103 2   te00    1   2557

这是我的表:tbtables

tbstudent

            idstd          namestd        ids           section  term    years  
            55001          aa            400 101        1         1      2557   
            55001          aa            400 102        1         1      2557
            55001          aa            400 103        1         1      2557
            55002          ab            400 101        2         1      2557
            55002          ab            400 102        2         1      2557
            55002          ab            400 103        2         1      2557
            55003          ac            400 101        1         1      2557
            55003          ac            400 102        1         1      2557
            55003          ac            400 103        1         1      2557

这是我的代码:

    SELECT        idstd, namestd
    FROM            tbstudent
    enter code here
    WHERE        (ids =
    (SELECT        ids
                               FROM            tbtables
                               WHERE        (ids = @ids) AND (section = @section)))

**我输入ids = 400 101和section = 2

发生了什么我不明白请告诉我     输出**

    idstd          namestd
     55001         aa
     55002         ab
     55003         ac

why :(

2 个答案:

答案 0 :(得分:2)

用作

SELECT        idstd, namestd
    FROM            tbstudent
    WHERE        (ids = @ids) AND (section = @section)

它只会返回

  

idstd | namestd

     

55002 | ab

为什么需要使用tbltable

进行内部联接

在您的查询中,tbltable返回400 101tblstudent,其中3条记录具有相同的ID。

答案 1 :(得分:1)

使用嵌套查询

SELECT        ids
FROM            tbtables
WHERE        (ids = @ids) AND (section = @section)

您选择了与搜索匹配的ID,结果 - > 400 101

使用其他查询

SELECT        idstd, namestd
FROM            tbstudent
WHERE        (ids = ...

你选择idstd,namestd,其中ids = previus结果 - > 400 101,

然后你的结果