内部联接选择结果与表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部联接选择结果与表相关的知识,希望对你有一定的参考价值。

如何将选择结果与另一个表连接?

示例:生成每个产品类型的聚合值的2列表

SELECT product_type, SUM(value) AS total from table1
WHERE something_something_is_true
GROUP BY product_type;

另一个名为table2的表具有产品类型的文本描述

product_type | description | more columns
---------------------------------------
1            | ....................
2            | ....................

如何将description列加入上面的选择结果,以便生成的表看起来像这样?

product_type | total | description
---------------------------------
1            | 589   | stationary
2            | 234   | closing
答案

您可以将子查询用作表表达式:

SELECT t1.product_type, total, description
FROM   (SELECT   product_type, SUM(value) AS total
        FROM     table1
        WHERE    something_something_is_true
        GROUP BY product_type) t1
JOIN   table2 t2 ON t1.product_type = t1.product_type
另一答案

将您的查询用作派生表,然后将描述表连接到它。

select t1.*, t2.description
from (
  SELECT product_type, SUM(value) AS total 
  from table1
  WHERE ...
  GROUP BY product_type
) t1 
  join table2 t2 on t1.product_type = t2.product_type
另一答案

你可以这样做:

SELECT t1.product_type, SUM(value) AS total,
       MAX(t2.description)
FROM table1 t1 LEFT JOIN
     table2 t2
     ON t2.product_type = t1.product_type
WHERE something_something_is_true
GROUP BY t1.product_type;

以上是关于内部联接选择结果与表的主要内容,如果未能解决你的问题,请参考以下文章

使用多个内部联接时,与使用单个内部联接时相比,我得到不同的结果

有没有办法改进这个查询

忽略单峰的内部联接

使用内部联接删除一行数据[重复]

为内部联接查询中的一个字段选择不同的值

内部联接和简单联接之间是不是有任何性能差异? [复制]