好的,所以我运行此查询来计数,这是正确的:

mysql> select count(medias.fileRef) from medias where fileRef=20193621;
+-----------------------+
| count(medias.fileRef) |
+-----------------------+
| 135869 |
+-----------------------+


因此,我运行此命令将其放入另一个表:

mysql> update files set refCount=(select count(medias.fileRef)
       from medias where fileRef=20193621) where id=20193621;

Query OK, 1 row affected, 1 warning (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 1


(请注意,medias.fileRef是一个包含files.id的INT),而files.refCount应该包含指向该files.id的所有媒体行的总数:

然后我去检查它,它是错误的。

mysql> select refcount from files where id=20193621;
+----------+
| refcount |
+----------+
| 127 |
+----------+


怎么可能呢?我在这里做错了什么?

最佳答案

这是因为您的files.refcount列数据类型是TINYINT。将其更改为INT或任何其他合理的numeric type

10-06 14:37