sql - 对 mySQL 中两个表的总和进行排序

标签 sql mysql

我想不出一个可以跨表添加和比较的查询。我有三个表:

房子

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/

相关文章:

sql - 对两列的任意组合的唯一约束

mysql - 基于两个条件的 SQL 中的 ALTER 和 UPDATE 表

python - Django书籍第五章数据库引擎设置

php - 循环通过 MySQL 左加入 php 与 2 个单独的查询

php - Ubuntu 服务器虚拟主机未正确重定向

php - SQL 查询未从数据库中找到确切的名称

mysql - 如何在多个列上选择 DISTINCT 并在 mysql 中选择其他列

c# - 我有两个具有整数值的 sql 列,那么如何在不手动插入数据的情况下设置为增加 1?

SQL查询以查找ID不在另一个表中的记录

mysql - 西门子 WinCC VBscript 转 Mysql