Mysql 使用计数时从另一个表更新一个表?
我有一个带有id(int)和timestamp(timestamp)字段的stats表 给我十大身份证 我想把这些id放在另一张“热门”表格中 Popular有id(int)、position(int)和timestamp(timestamp)字段 总之,我想创建一个查询,用stats表中的“前10个”id更新流行表Mysql 使用计数时从另一个表更新一个表?,mysql,Mysql,我有一个带有id(int)和timestamp(timestamp)字段的stats表 给我十大身份证 我想把这些id放在另一张“热门”表格中 Popular有id(int)、position(int)和timestamp(timestamp)字段 总之,我想创建一个查询,用stats表中的“前10个”id更新流行表 INSERT INTO `popular` (`id`,`position`,`timestamp`) ( SELECT `id`,COUNT(`id`),NOW()
INSERT INTO `popular` (`id`,`position`,`timestamp`)
(
SELECT `id`,COUNT(`id`),NOW()
FROM `stats` GROUP BY `id`
ORDER BY COUNT(`id`) DESC LIMIT 10
)
不过,这并不是一个很好的更新。这将把stats
中新的“前10名”条目放入popular
,同时保留“旧的前10名”。以前可能需要在popular
上执行TRUNCATE
更新:将清空给定的表。它几乎与
DELETE FROM
相同,但它也会重置auto_increment
Linus中的任何主键,没错。我将无法使用insert,因为它将不断添加新记录。告诉我有关TRUNCATE的更多信息。我将使用PHP在网页上显示流行表中的数据。如果我修改或删除这些数据,这会导致一个空网页吗?即使只是一瞬间,如果出现错误,情况会更糟。或者我会担心什么。如果你担心微调秒,代码>流行< /代码>是空的排空后,并更新之前,考虑。好,莱纳斯。我仍然放弃了更新,因为我刚刚发现这个问题似乎与我的问题相似。你们认为这对我的情况有效吗?@jamjamUPDATE
只有在你实际更新现有id的位置时才“有效”。如果其他ID可以进入前10名,则必须选择TRUNCATE/INSERT。该表的大小是多少?使用SELECT..groupby
INSERT INTO `popular` (`id`,`position`,`timestamp`)
(
SELECT `id`,COUNT(`id`),NOW()
FROM `stats` GROUP BY `id`
ORDER BY COUNT(`id`) DESC LIMIT 10
)