我有两个表,一个是
表结构如下:
user
用来跟踪用户信息,另一个是users_classes
用来跟踪用户和班级(班级在另一张表中)的关系。我想连接这些表并返回用户信息以及他们所在班级的数组。有没有有效的方法可以做到这一点?表结构如下:
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(255) UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE
)
CREATE TABLE users_classes (
user_id BIGINT REFERENCES users(id),
class_id BIGINT REFERENCES classes(id),
PRIMARY KEY(user_id, class_id)
)
My attempt:
SELECT
u.id,
FIRST(u.username) AS username,
FIRST(u.email) AS email,
array_agg(c.class_id) AS classes
FROM users_classes AS c
JOIN users AS u
ON c.user_id = u.id
GROUP BY u.id;
我觉得这样可以行(在实现 FIRST() 后),但是否有更标准的方法来完成?