比方表A是老师的名字:
表B是学生的信息(id,签到率等)。我想让A表里的username自动填充到表B最后一列的advisor里(每个name填充次数均等,假设B中有9万行学生信息)。这具体该如何实现呢?
比方表A是老师的名字:
表B是学生的信息(id,签到率等)。我想让A表里的username自动填充到表B最后一列的advisor里(每个name填充次数均等,假设B中有9万行学生信息)。这具体该如何实现呢?
针对您的问题,可以通过以下步骤来实现PostgreSQL的自动填充:
UPDATE table_B
SET advisor = (
SELECT username FROM (
SELECT username, ROW_NUMBER() OVER (ORDER BY username) AS rnum
FROM table_A
) AS t
WHERE rnum = (table_B.id % (SELECT COUNT(*) FROM table_A)) + 1
)
这个查询语句将table_A按照username升序排序,并给每行分配一个行号rnum。然后通过计算每个学生在B表中的id除以A表中的总行数,来确定应该从A表中的哪一行中提取username,这样可以实现平均分配每个老师的名字。最后,将查询结果中与id对应的username赋值给新添加的advisor列。
请注意,如果table_A和table_B都比较大,此查询可能会需要一些时间来完成。因此,建议在执行此查询之前先备份数据,并考虑对数据进行分批处理。
希望这些信息能够帮助到您!