我有两个查询,每个返回一个结果,即一个数字
Select Count(*) as StockCountA from Table_A where dept='AAA'
Run Code Online (Sandbox Code Playgroud)
结果
StockCountA
550
Run Code Online (Sandbox Code Playgroud)
.
Select Count(*) as StockCountB from Table_B where dept='BBB'
Run Code Online (Sandbox Code Playgroud)
结果
StockCountB
450
Run Code Online (Sandbox Code Playgroud)
我希望将这两个结果加入一行记录,即
| StockCountA | StockCountB
| 550 | 450
Run Code Online (Sandbox Code Playgroud)
Gol*_*rol 37
您可以使用:
select
(Select Count(*) as StockCountA from Table_A where dept='AAA') as StockCountA,
(Select Count(*) as StockCountB from Table_B where dept='BBB') as StockCountB
Run Code Online (Sandbox Code Playgroud)
说明:您可以选择单个值作为select语句中的字段,因此您可以编写类似的内容
select
x.*,
(select Value from Table_Y y) as ValueFromY
from
Table_X x
Run Code Online (Sandbox Code Playgroud)
这仅在子查询返回最多1行时才有效.如果返回0行,则ValueFromY将返回NULL并且超过1行,查询将失败.
select(在SQL Server,MySQL和其他可能的版本中)的另一个特性是,您可以只选择值而不指定表,如下所示:
Select
3.14 as MoreOrLessPI
Run Code Online (Sandbox Code Playgroud)
通过编写如下所示的查询,您可以将这两个事实组合在一起,将两个计数合并为一个结果:
Select
(Select query that returns at most 1 row) as Result1,
(Select another query that returns at most 1 row) as Result2
Run Code Online (Sandbox Code Playgroud)
这应该会给你想要的结果:
SELECT * FROM(
(Select Count(*) as StockCountA from Table_A where dept='AAA') StockCountA ,
(Select Count(*) as StockCountB from Table_B where dept='BBB') StockCountB
);
Run Code Online (Sandbox Code Playgroud)