如何将一个查询中的常数值列添加到另一个查询结果中



基本上,我有两个表。从表A,我想计算它的总行数。我可以用SELECT COUNT(*) FROM A作为第一个查询来获得它。从其他表B,我想从中选择所有的东西(列(。我可以使用SELECT * FROM B作为第二个查询。我的问题是如何使用单个查询将第一个查询的结果作为列添加到第二个查询结果中。换句话说,我希望通过使用一个查询,获得一个额外的列,其值为从表A到表B的所有行的总数。

交叉加入:

SELECT * FROM
(SELECT COUNT(*) as cnt FROM A) a
CROSS JOIN
B

Join使结果集更宽。并集使结果集更高。任何时候,如果你想增加你必须加入的列的数量,但如果你没有任何东西要加入ON,你可以使用CROSS join,因为它不需要任何ON谓词

或者,您可以将INNER JOIN与始终为true的谓词、没有任何关联WHERE的旧式联接语法一起使用,或者您可以将返回单个值作为子查询的select放在选择列表区域中,而不使用任何协调谓词。大多数DBA可能会断言,这些语法中没有一个比CROSS JOIN语法更可取,因为CROSS JOIN是对您意图的明确声明,而其他语法看起来可能只是忘记了什么

最新更新