0

我有一个包含用户信息的表和一个包含标签信息的表。标记表基本上具有标记类型、用户 ID 和标记值。我根据 UserID 加入了这两个表。

现在我想用 TagType = 1 的标签的值查询所有用户的列表。

SELECT [user].name, [tag].value
FROM user LEFT OUTER JOIN 
  tag ON user.id = tag.userid
WHERE [tag].type = 1

到目前为止,一切都很好。这很好用。

我现在遇到的问题是,我还希望在我的查询中看到没有标签类型 = 1 的标签的用户。在这种情况下,它应该只返回 NULL。现在,查询不会返回这些用户。

如果我摆脱了“WHERE [tag].id = 1”,那么它们就会出现,但它会为每个用户返回几行——每个现有标签类型一个——但我不希望这样。

从某种意义上说,我想得到:

Column 1: User Name
Column 2: Tag value of Tag Type 1 if it exists, otherwise NULL

我被困在那里。我不知道如何让其他用户加入,但将其他标签类型拒之门外。

4

2 回答 2

1

把你的WHERE条件放在条件里面JOIN

SELECT [user].name, [tag].value
FROM user LEFT OUTER JOIN 
  tag ON user.id = tag.userid and [tag].type = 1
于 2013-03-07T18:18:14.263 回答
0

尝试:

SELECT [user].name, [tag].value
FROM user LEFT OUTER JOIN 
  tag ON user.id = tag.userid AND [tag].type = 1
于 2013-03-07T18:17:32.500 回答