2012-03-17 58 views
0

我得到了两个表,其中pk相同(idnumber)..我想从table1中选择所有列,其中idnumber(table1的pk)是等于idnumber(表2的PK,其中表2的列=“一些价值”。)select * from mytable其中idnumber =(从其他地方选择idnumber其中,其他的列= n)

请帮助...谢谢

这里是我迄今为止..

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

它不工作...

我完全新的SQL Server ..刚刚起步前几天..请帮助..

回答

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; 
+0

谢谢..它的工作。 – 2012-03-17 08:47:48

0

这会为你的语法工作。

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

这种语法不常用。您应该使用JOIN来代替。