我有两个表格具有相同的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的新手..几天前就开始了......请帮助..
答案 0 :(得分:2)
假设两个表共享一个公共列,您只需执行INNER JOIN
并使用WHERE
子句执行其他过滤。
SELECT * FROM A INNER JOIN B ON A.SharedId = B.SharedId WHERE B.Column1 = 'foo';
我认为您正在寻找的具体查询是:
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。