mysql - 这个MYSQL查询如何才能更好

标签 mysql

我有一个表,其中包含用户的所有照片。由于某些原因(不关心为什么)可以从用户表中删除(使用 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/

相关文章:

php - 我如何向新注册用户发送确认电子邮件?

mysql - CakePHP MySQL View

mysql - Sequelize 中的 "WHERE"子句与嵌套表

mysql - 如何在 ruby​​ on rails 中向表列添加唯一性

mysql - AWS RDS 中止连接 Haproxy

mysql - 使用 Knex 动态迁移和播种数据库?

从连接查询更新 Mysql

sql - 如何计算MySQL中日期时间之间的间隔?

javascript - 如何将php中的mysql数据发送到javascript数组

php - 无法使用 000webhost 在 Laravel 中迁移