在与另一个表连接时,我需要从一个表输出行数据,第二个表中的列数据应通过单个查询以逗号分隔第一个表的每一行。若第二个表中并没有匹配的行,那个么它不应该出现在输出中。以下是表格。
users table
╔══════════╦═════════════════╗
║ user_id ║ username ║
╠══════════╬═════════════════╣
║ 1 ║ abc ║
║ 2 ║ def ║
║ 3 ║ ghi ║
║ 4 ║ jkl ║
╚══════════╩═════════════════╝
users_friends table
╔══════════╦═════════════════╗
║ user_id ║ friend_id ║
╠══════════╬═════════════════╣
║ 1 ║ 1 ║
║ 1 ║ 2 ║
║ 1 ║ 3 ║
║ 2 ║ 1 ║
║ 2 ║ 3 ║
║ 3 ║ 4 ║
╚══════════╩═════════════════╝
我希望输出如下。
╔══════════╦═════════════════╗═════════════════╗
║ user_id ║ user_name ║ friends ║
╠══════════╬═════════════════╣═════════════════╣
║ 1 ║ abc ║ 1,2,3 ║
║ 2 ║ def ║ 1,3 ║
║ 3 ║ ghi ║ 4 ║
╚══════════╩═════════════════╝═════════════════╝
我试着查询如下。但它重复数据。但它不起作用。
$sql= "SELECT user_id, user_name, friend_id FROM users INNER JOIN users_friends ON users.user_id= friends.user_id"
使用MySQL GROUP_CONCAT()
函数:
SELECT u.user_id, u.user_name, GROUP_CONCAT(uf.friend_id)
FROM users u INNER JOIN users_friends uf ON u.user_id = uf.user_id
GROUP BY user_id, user_name