我想不出一个可以跨表添加和比较的查询。我有三个表:
房子
id
-----
1
2
月份
id | house_id | btus
---------------------
3 | 1 | 100
4 | 2 | 200
汽车
id | month_id | btu
--------------------------
5 | 3 | 10
6 | 4 | 20
7 | 3 | 15
我需要一个查询,该查询将返回按月份和汽车的总 btus 排序的房屋 ID。
因此对于上面的示例,它将返回 2,1 作为 (200+20) > (100 + 10 + 15)
最佳答案
SELECT h.*
FROM house
ORDER BY
(
SELECT SUM(c.btu)
FROM month m
JOIN cars c
ON c.month_id = m.id
WHERE m.house_id = h.id
) +
(
SELECT SUM(m.btus)
FROM month m
WHERE m.house_id = h.id
)
DESC
,或者这个(可能稍微更有效):
SELECT h.*
FROM house
ORDER BY
(
SELECT SUM
(
btus +
(
SELECT SUM(btu)
FROM cars c
WHERE c.month_id = m.id
)
)
FROM month m
WHERE m.house_id = h.id
)
DESC
关于sql - 对 mySQL 中两个表的总和进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784074/