php - 如何在php中显示行的多个值?

标签 php mysql sql

我的数据库中有两个表:

user_id | user_name | email |
    1       Jack       ...
    2       Annie      ...

最喜欢的颜色

user_id | color_name |
    1        black
    1        green
    2        blue

如何按用户名显示所有喜欢的颜色?如何在获取时拆分这些多个值?

显示示例: jack :黑、绿 |安妮:蓝色

我的sql是这样的:

SELECT user_name, GROUP_CONCAT(color_name SEPARATOR ', ')
FROM Persons
LEFT JOIN favoriteColors ON Persons.user_id = favoriteColors.user_id
GROUP BY Persons.user_id
LIMIT {$limit} OFFSET {$offset}

($limit$offset由ajax发送)

最佳答案

您可以使用以下聚合函数来实现此目的

https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_json-arrayagg https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_json-objectagg

SELECT p.user_id, GROUP_CONCAT(DISTINCT p.user_name) name, JSON_ARRAYAGG(f.color_name) colors
FROM Persons p
LEFT JOIN favoriteColors f ON p.user_id = f.user_id
WHERE p.user_name = {$username}
GROUP BY p.user_id
LIMIT {$limit} OFFSET {$offset}

关于php - 如何在php中显示行的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53868271/

相关文章:

c# - If 和 Null sql 语句

php - 用户的 Ratchet 存储连接和在服务器实异常(exception)发送消息

php - 限制同一IP的用户访问多个页面

php - 如何连接两个表并在php中返回结果

mysql - 将 SQL Server SQL 查询转换为 MySQL

java - 如何在数据库中生成序号序列?

php - 序列化(数据)的哪个mysql列类型?

php - CakePHP 忘记密码

c++ - libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

php - MySQL 连接 "Cost"?