我有两张表Person
和Table1
。我想将person
表加入table1
foodId
所在的foodId
。
但是,当我进行内连接时,它只加入Person
为1的记录。
id fName lName
1 John Smith
:
Table1
id personId foodId date
1 1 1 2014-10-28
2 1 2 2014-10-28
:
SELECT *
FROM Person p
INNER JOIN Table1 t ON p.id = t.personId AND foodId = 2
我试过的查询是:
SELECT *
FROM Person p
INNER JOIN Table1 t ON p.id = t.personId
WHERE t.foodId = 2
我也尝试过:
{{1}}
这两个查询都显示空结果。
任何建议都将不胜感激!
答案 0 :(得分:1)
( SQLFiddle似乎已经死了......无法连接 - 因此,张贴在这里的所有荣耀...... )
原始问题中显示的设置:
DECLARE @Person TABLE (id INT, fName VARCHAR(20), lName VARCHAR(50))
INSERT INTO @Person
(id, fName, lName)
VALUES
(1, -- id - int
'John', -- fName - varchar(20)
'Smith' -- lName - varchar(50)
)
DECLARE @Table1 TABLE (id INT, PersonId INT, FoodID INT, T1Date DATE)
INSERT INTO @Table1
(id, PersonId, FoodID, T1Date)
VALUES
(1, -- id - int
1, -- PersonId - int
1, -- FoodID - int
'20141028' -- T1Date - date
), (2, 1, 2, '20141027')
原始问题中显示的查询#2:
SELECT *
FROM @Person p
INNER JOIN @Table1 t ON p.id = t.personId
WHERE t.foodId = 2
该查询的输出:
此处必定还有其他内容 - 或者您已经过度简化了设置,使其无法正常工作。但是您的查询#2 DOES 会返回一行 - 您期望的那一行。
答案 1 :(得分:0)
也许你需要左连接而不是内连接。
SELECT * FROM Table1 t LEFT JOIN Person p ON p.id = t.personId WHERE t.foodId = 2
答案 2 :(得分:0)
当您进行内部联接时,只会显示两个表中存在的记录。
我喜欢这张照片