我不确定我在这里做错了什么,因为我已经好几年没有接触 SQL 查询,而且 MSSQL 查询语言对我来说有点陌生,但在谷歌搜索 30 分钟后,我仍然找不到答案。
问题
我有两个查询非常好:
SELECT COUNT(*) AS 'NumberOfAccounts' FROM Accounts
SELECT COUNT(*) AS 'NumberOfUsers' FROM Users
我需要在我的 API 响应中一次性获取此信息,因为我不想执行两个语句。我怎样才能将它们组合成一个查询,以便它返回如下表:
+------------------+---------------+
| NumberOfAccounts | NumberOfUsers |
+------------------+---------------+
| 10 | 16 |
+------------------+---------------+
我尝试过的
- UNION
SELECT COUNT(*) AS 'NumberOfAccounts' FROM Accounts UNION SELECT COUNT(*) AS 'NumberOfUsers' FROM Users
这为我提供了两个表的结果,但是它全部将其推送到 NumberOfAccounts
中,结果对我来说无效,无法解析。
+------------------+
| NumberOfAccounts |
+------------------+
| 10 |
| 16 |
+------------------+
- 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/