MySQL:对于每个用户,使用该用户的ID向另一个表添加一行

时间:2014-11-21 06:36:30

标签: mysql bulkinsert

我在users表的项目中有很多用户。我有一个用于notifications的第二个表。当用户收到他的通知时,会将其添加到通知表中,其中包含user_idread(真/假)标记。

现在,如果我想为每个用户添加通知(例如网站脱机等),我如何为users表中的每个用户添加一行?除了auto_incremented行id之外,新行完全相同,但每个新行都必须指定用户ID。

当然我可以在php中编写一个脚本来生成大量的sql查询来执行此操作并使用多查询插入一次性发送它们,但如果我有数千个用户,这似乎在计算上很昂贵。

概念查询: FOR users.id as user_id

INSERT INTO notifications VALUES (,user_id=user_id,msg='We will be going offline at 5:00!',read='0')

那可以吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您有数千名用户,那么生成数千个SQL查询并将其发送到您的MySQL服务器并不重要。

但如果你有数百万用户,事情会发生变化。

一个经济实惠的选择是,向表格写一个通知,例如system_notifications。在您的网页上不仅会显示notifications,还会显示system_notifications

然后为已经阅读过这些通知的用户保存ID。

e.g。

system_notifications table
| id | message |

system_notifications_read_users table
| id | user_id |

然后,您只能在用户阅读通知时操作您的数据库。

当您的系统通知已过期时(例如您已完成停机时间),您可以将其从之前说过的两个表中删除。