select * from mytable where idnumber =(从othertable中选择idnumber,其中othertable.column = n)

时间:2012-03-17 08:31:58

标签: sql-server-2005 sqlcommand

我有两个表格具有相同的pk(idnumber)..我想从table1中选择idnumber(table1的pk)等于idnumber的所有列(table2的pk,其中table2的列=“某个值”..)

请帮助......谢谢

这是我到目前为止所得到的......

SELECT     
    idnumber, fname, lname, mname, bday, gender, email, contact  
FROM         
    tblStudents   
WHERE     
    (idnumber =  (SELECT idnumber
                  FROM tblPayments
                  WHERE (payment1 = 0)))  

它不起作用......

我是SQL Server的新手..几天前就开始了......请帮助..

2 个答案:

答案 0 :(得分:2)

假设两个表共享一个公共列,您只需执行INNER JOIN并使用WHERE子句执行其他过滤。

SELECT * FROM A INNER JOIN B ON A.SharedId = B.SharedId WHERE B.Column1 = 'foo';

SQL Join Fundamentals (2005)

我认为您正在寻找的具体查询是:

SELECT 
    S.idnumber,
    S.fname,
    S.lname,
    S.mname,
    S.bday,
    S.gender,
    S.email,
    S.contact

FROM tblStudents S 
    INNER JOIN tblPayments P ON S.idnumber = P.idnumber 
WHERE P.payment1 = 0;

答案 1 :(得分:0)

这适用于您的语法。

    'SELECT     
    idnumber, fname, lname, mname, bday, gender, email, contact  
FROM         
    tblStudents   
WHERE     
    (idnumber =  ANY (SELECT idnumber
                  FROM tblPayments
                  WHERE (payment1 = 0)))'

这种语法并不常用。你应该使用JOIN。