假设我们有下面两个表
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/