【发布时间】:2018-02-01 04:12:58
【问题描述】:
我正在使用 MySQL,这是一个名为“profile”的数据库表。
然后我的项目要求我在配置文件上执行某种“高级搜索”,如下所示。我可以选择“匹配任何”或“匹配所有”,然后选择字段(全名、电子邮件等)、条件(是、不是、包含、不包含等)并输入值。
首先,我尝试连接字段,这是表格。
然后为了实现高级搜索,我使用了where子句后跟like,和/或如下。
SELECT (GROUP_CONCAT(`field_name`,'=',`field_value`)) AS `profile_values`,
FROM `test`.`profiles`
where `profile_values` like 'Full Name=%Bryan%' or `profile_values` like 'Phone=%123456789%'
group by `user_id`
此查询将给出 2 个结果(user_id = 1 和 3)。如果我需要匹配所有搜索字段,我只需将查询中的“或”更改为“和”即可。
但是,如果我更改如下查询,将显示 3 个结果 (user_id=1,2,3) 而不是 2 个 (user_id=2,3):
.....其中profile_values 喜欢'Full Name=%B%'
查询似乎会在 profile_values 的任何部分搜索“b”。
关于如何修改搜索查询的任何建议?还是我不应该连接数据?
【问题讨论】:
标签: mysql sql mysql-workbench