消除UNIONS的重复项

时间:2018-02-27 22:12:34

标签: sql ms-access duplicates union

我正在尝试为社交媒体网站上的简单搜索栏创建SQL查询。到目前为止我有这个:

SELECT DISTINCT Users.[user id], users.[first name] AS [Hit], users.[user profile hyperlink] AS [Hyperlink]
FROM users
WHERE users.[first name] LIKE '*web*'

UNION 
SELECT DISTINCT Users.[user id],  users.[last name], users.[user profile hyperlink]
FROM users
WHERE  users.[last name] LIKE '*web*'

UNION  
SELECT DISTINCT Users.[user id],  posts.[post content], posts.[post hyperlink]
FROM posts, users
WHERE posts.[post content] LIKE '*web*'
AND posts.[user id] = users.[user id]


UNION 
SELECT DISTINCT group.[group id], Group.[Group Name], group.[group page hyperlink]
FROM [Group]
WHERE Group.[Group Name] LIKE '*Web*'

UNION  
SELECT DISTINCT Users.[user id],  posts.[post content], posts.[post hyperlink]
FROM posts, users, posts_has_tags, tags
WHERE tags.[tag] LIKE '*web*'
AND posts_has_tags.[tag id] = tags.[tag id]

我不想添加变量,所以我很好用' web '正在寻找。但是,查询会返回一些错误的结果(我认为这与最后一个union' d查询有关),并为不同的用户ID重复其他结果。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

通过结合where子句

,可以将前两个查询组合在一起
SELECT DISTINCT Users.[user id], users.[first name] AS [Hit], users.[user profile hyperlink] AS [Hyperlink]
FROM users
WHERE users.[first name] LIKE '*web*' or users.[last name] LIKE '*web*'

此外,第4个查询返回group.[group id]作为第1列,其他返回Users.[user id]。不知道如何在两个不同的列之间区分,你会得到错误的数据