我正在尝试为社交媒体网站上的简单搜索栏创建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重复其他结果。
有人可以帮忙吗?
答案 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]
。不知道如何在两个不同的列之间区分,你会得到错误的数据