我有一个 MySQL 数据库,其中每个用户都有一个帐户,每个帐户可以有多个权限。
我的最终目标是最终得到帐户的用户名和以逗号分隔的权限 ID 列表。有两种方法可以做到这一点:
SELECT a.username, GROUP_CONCAT(rp.permission_id) as permission_ids
FROM account AS a
JOIN role_permission AS rp
ON rp.role_id = a.role_id
WHERE a.id = 1902
... 或者 ...
SELECT username
FROM account
WHERE id = 1902;
SELECT permission_id
FROM account_permission
WHERE account_id = 1902
通过单个查询,我得到了我想要的结果。通过两个查询,我必须使用第二个结果集在应用程序 (PHP) 中创建逗号分隔列表。
是否有任何性能原因不选择第一个选项?我以前从未使用过 GROUP_CONCAT,所以我不知道它的含义,性能方面。