php - 如何从表 X 中选择与表 Y 共享最少关系的行?

标签 php mysql sql

假设我们有下面两个表

TABLE: PEOPLE
+----+------+
| id | name |
+----+------+
| 1  | john |
+----+------+
| 2  | mike |
+----+------+
| 3  | derp |
+----+------+

TABLE: Images
+----+-----------+----------+
| id | person_id | image    |
+----+-----------+----------+
| 1  | 3         | img1.jpg |
+----+-----------+----------+
| 2  | 3         | img2.jpg |
+----+-----------+----------+
| 3  | 2         | img3.jpg |
+----+-----------+----------+

我需要一个查询,从 people 表中选择所有人,并按照 images 表中图像最少的人对他们进行 ASC 排序

所以返回行的顺序是

John
Mike
Derp

最佳答案

对图像表进行外部连接,然后计算每个用户的非空图像 ID 的数量。

SELECT p.id,
       p.name,
       COUNT(i.id) AS image_count
FROM PEOPLE p
LEFT OUTER JOIN Images i
    ON p.id = i.person_id
GROUP BY p.id,
         p.name
ORDER BY COUNT(i.id);

( SQLFiddle .)

关于php - 如何从表 X 中选择与表 Y 共享最少关系的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267570/

相关文章:

mysql - 反转分组查询的序列号

SQL:如何执行仅更新非空值的更新?

php - 在 Mysql 查询中使用数组值

php - 如何将类添加到 $_GET 上的侧边栏

php - 无法获取等于 0 的数据

mysql - 更新 Laravel 数据库

c# - 更新和删除按钮 C#

MySQL:从带标志的表迁移到映射表

python - 按百分比随机划分并存储 SQL 表

php - 具有待定状态问题的 WP_Query 和 WooCommerce 订单