我有一个包含用户信息的表和一个包含标记信息的表。标签表基本上有TagType,UserID和标签的值。我根据UserID加入了两个表。
现在,我想查询具有TagType = 1的标记值的所有用户的列表。
SELECT [user].name, [tag].value
FROM user LEFT OUTER JOIN
tag ON user.id = tag.userid
WHERE [tag].type = 1
到目前为止,这么好。这很有效。
我现在遇到的问题是我还希望在查询中看到没有Tag Type = 1的标签的用户。在这种情况下,它应该只返回NULL。现在,查询不会返回这些用户。
如果我摆脱了' WHERE [tag] .id = 1'然后它们会出现,但它会为每个用户返回几行 - 每个用户对应一个现有的标记类型 - 但我不想这样做。
从某种意义上说,我想得到:
Column 1: User Name
Column 2: Tag value of Tag Type 1 if it exists, otherwise NULL
我被困在那里。我不知道如何让其他用户进入,但保留其他标签类型。
答案 0 :(得分:1)
将WHERE
条件置于JOIN
条件。
SELECT [user].name, [tag].value
FROM user LEFT OUTER JOIN
tag ON user.id = tag.userid and [tag].type = 1
答案 1 :(得分:0)
尝试:
SELECT [user].name, [tag].value
FROM user LEFT OUTER JOIN
tag ON user.id = tag.userid AND [tag].type = 1