我正在尝试为我的应用程序创建一个查找脚本。当前的表结构如下所示:
id userid profile_field profile_value
-----------------------------------------------------
1 1 firstname John
2 1 lastname Smith
3 1 address 123 anywhere
4 1 city city
5 2 firstname Jane
6 2 lastname Smith
7 2 address 456 anywhere
8 2 city town
我正在尝试编写一个查询,该查询将允许我根据用户输入搜索用户。
例如,我的管理员想要搜索姓氏为“smith”的用户。在此示例中,它将返回用户 ID 1 和 2。
这可以用mysql来做吗?到目前为止,我已经研究了 mysql 的 group_concat 函数,但它似乎将所有内容放入字符串而不是列中。因此,我无法生成适当的 where 子句来进行搜索。
编辑:我必须道歉,我应该说得更清楚。
我还需要考虑有多个输入。例如,搜索名字如“john”和姓氏如“smith”的用户。在此示例中,它只会返回用户 id 1。
这就是我遇到问题的部分。再次抱歉!
最佳答案
试试这个:
SELECT group_concat(DISTINCT UserID) as Results
FROM tableName
WHERE profile_value like CONCAT('%', 'Smith' ,'%')
这将返回
Results
==========
1, 2
或者
SELECT UserID as Results
FROM tableName
WHERE profile_value like CONCAT('%', 'Smith' ,'%')
这将返回
Results
==========
1
2
关于mysql - 如何将分组的行数据转换为列以供查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240916/