【发布时间】:2017-01-24 17:06:21
【问题描述】:
我的MySQL 查询有多个过滤器。它将根据某些过滤器从用户那里检索信息。
过滤器由用户选择,因此他们可以过滤多个值。除了其中一个过滤器可以在子查询中返回多行之外,它们都是唯一的。
用户可以过滤的内容:
- 按名称
- 按用户国籍
考虑到Name 在这种情况下是唯一的,但可能有多个用户具有相同的国籍。此外,如果没有任何过滤器,则查询应返回所有用户的所有 UserInfo。
另外,我面临的问题是信息存储在两个不同的表中。这是结构:
UserInformation Users
---------------- ----------
ID ID
Name UserInfo
Nationality
所以我必须获取与相应过滤器匹配的用户的UserInfo。如果我通过Name 进行过滤,我没有任何问题,因为它只能是唯一的,但如果我使用Nationality 作为过滤器,它会给我一个错误。
两个表都通过 ID 连接。
我现在做的是:
SELECT UserInfo FROM Users WHERE
ID LIKE (SELECT ID FROM UserInformation WHERE Name='UniqueName') AND
ID LIKE (SELECT ID FROM UserInformation WHERE Nationality='Spanish')
当然,如果我尝试通过Nationality 进行过滤,如果有多个值与Nationality 匹配,我可以看到存在问题,因为他们将无法使用超过一个返回ID。
我必须注意到我不能修改表的结构,因为我没有足够的权限,我只能查阅它们。
但是,我如何检索与一个、两个或不匹配过滤器的所有用户的 UserInfo(在这种情况下,它将返回所有 UserInfo 值)?
提前致谢!
【问题讨论】:
标签: mysql