sql - `INTERSECT` 不从两个表返回任何值,分别返回值

标签 sql sql-server

我不确定我在这里做错了什么,因为我已经好几年没有接触 SQL 查询,而且 MSSQL 查询语言对我来说有点陌生,但在谷歌搜索 30 分钟后,我仍然找不到答案。

问题

我有两个查询非常好:

  • SELECT COUNT(*) AS 'NumberOfAccounts' FROM Accounts

  • SELECT COUNT(*) AS 'NumberOfUsers' FROM Users

我需要在我的 API 响应中一次性获取此信息,因为我不想执行两个语句。我怎样才能将它们组合成一个查询,以便它返回如下表:

+------------------+---------------+
| NumberOfAccounts | NumberOfUsers |
+------------------+---------------+
|               10 |            16 |
+------------------+---------------+

我尝试过的

  1. UNION SELECT COUNT(*) AS 'NumberOfAccounts' FROM Accounts UNION SELECT COUNT(*) AS 'NumberOfUsers' FROM Users

这为我提供了两个表的结果,但是它全部将其推送到 NumberOfAccounts 中,结果对我来说无效,无法解析。

+------------------+
| NumberOfAccounts |
+------------------+
|               10 |
|               16 |
+------------------+
  1. INTRSECT SELECT COUNT(*) AS 'NumberOfAccounts' FROM Accounts INTERSECT SELECT COUNT(*) AS 'NumberOfUsers' FROM Users

这只会给我空结果,其中只有 NumberOfAccounts 列。

最佳答案

您可以将它们作为子查询放在 select 中:

SELECT (SELECT COUNT(*) FROM Accounts) as NumberOfAccounts,
       (SELECT COUNT(*) FROM Users) as NumberOfUsers

在 SQL Server 中,不需要 FROM 子句。

关于sql - `INTERSECT` 不从两个表返回任何值,分别返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48987565/

相关文章:

mysql - 带小数点的货币求和[MYSQL]

mysql - 检查用户是否匹配相同的选项

sql - 如何从数据库中获取撇号?

sql - 从具有 XML 数据类型的表中查询 XML 数据

SQL Server 添加新列后列名无效

Mysql 检查日期和插入付款划分的最佳方法

c# - 如何在 C# 中使用 LINQ "select null as "列

sql-server - 用于 SQL Server 架构

sql-server - 从一个返回结果集的存储过程调用另一个存储过程以合并该结果集

php - MSSQL 日期到 php