我有一个表,其中包含用户的所有照片。由于某些原因(不关心为什么)可以从用户表中删除(使用 DELETE FROM)一些用户,但照片保留在照片表中。
我需要知道用户表中实际存在的用户照片数量。
我想到的第一个解决方案是:
SELECT COUNT(DISTINCT user_id) FROM photos WHERE user_id IN (SELECT id FROM users)
但我不确定执行两个查询是否是最好的查询。有更好的方法吗?
最佳答案
最好的方法是在两个表之间使用外键约束,并实现级联删除。 MySQL 手册中提供了更多信息:
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
正如评论者所指出的,这需要使用 InnoDB 存储引擎。 This is the default storage engine as of MySQL 5.5.5.
关于mysql - 这个MYSQL查询如何才能更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206914/