我提出了这个方案,作为一种快速按组获取用户信息的简便方法。它是根据他人的建议以及一位比我更精通 SQL 的人的指点拼凑而成的。
如果您需要克隆一个组、为组内现有成员应用关注设置、向整个组发送传统电子邮件、在不导出所有用户数据的情况下查看其自定义字段内容、向特定小组透露某些信息等,这个方案会非常有用。
您可以根据代码中的注释,通过添加直接管理员链接或自定义字段来对此进行定制。
目前,Meta 上似乎没有一个很好的 Data Explorer 查询存储库。希望在这里发布是可以的。
--[params]
-- string :group_name
With included_users AS (
SELECT
gu.user_id
FROM group_users gu
JOIN groups g
ON g.id = gu.group_id
WHERE g.name = :group_name
),
e AS (
SELECT email, user_id
FROM user_emails u
WHERE u.primary = true
)
SELECT
u.id AS user_id, u.name, u.username, e.email
-- 下一行为您提供指向用户管理面板的直接链接
-- concat('/admin/users/',u.id,'/',u.username) AS admin_access_url
-- 下面带有 MAX 的行允许您提取用户自定义字段,根据需要复制
-- 将 'name of the field' 和 "display name" 替换为您要查询的字段
-- MAX(CASE ucf.name WHEN 'name of the field' THEN value END) AS "display name"
-- *确保除最后一行外的所有字段后面都有逗号*
FROM users as u
LEFT JOIN user_custom_fields AS ucf on u.id = ucf.user_id
RIGHT JOIN e on u.id = e.user_id
RIGHT JOIN user_fields AS uf on concat('user_field_', uf.id) = ucf.name
WHERE u.id IN (SELECT user_id FROM included_users)
GROUP BY u.id, e.email
ORDER BY u.username asc