mysql - 如何将分组的行数据转换为列以供查找?

标签 mysql

我正在尝试为我的应用程序创建一个查找脚本。当前的表结构如下所示:

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/

相关文章:

php - Codeigniter insert_batch 限制问题

php - ci_sessions 表中的 CodeIgniter 出现 1064 错误

java - 如何使用 globalMap.get() 获取 HashMap 中的所有值

mysql - 在 SSIS 中使用 ReplaceNULL 函数时抛出异常

mysql - 选择所有列,同时对一列执行 ifnull

mysql - 从mysql中与日期对应的特定列中提取固定值

php - 我如何将此数组转换为可用的 javascript 数组?

php - mysql数据库中如何在前面添加0并自动递增

php - 如何在 Codeigniter 中对始终位于顶部的特定/某些行的表进行排序?

mysql - vb.net 如何创建一个变量来计算作为插入和更新进入的条目