这是一个时髦的问题,我知道这一点。也许这都是因为我真的很累。
现在,不要责怪设计 - 它有缺陷,但我无能为力,好吗?
- 两个表,由一个 id 字段链接。
- 第一个表包含仓库中的位置(表 P)
- 第二个表包含存储在仓库中每个位置的元素(表 PA)
- ALL 仓库中的位置都存在于 P 表中(> 5000 条记录)
- 每个位置可以包含不止一篇文章
- P 表中的位置不存在于 PA 表中
positionarticles 中的计数加上 positionarticles 中不的位置。
真的没有比这种完全愚蠢的方法更好的方法了吗?:
SELECT SUM(row)
FROM
(
SELECT COUNT(*) row
FROM PA
UNION
SELECT COUNT(*)
FROM P
WHERE ID NOT IN
(
SELECT P_ID
FROM PA
)
) as rowcounter
示例数据
表 P:
ID Name
1 A01
2 A03
3 B01 *
4 B02 *
表 PA:
ID P_ID A_ID
1 1 201 *
2 1 202 *
3 1 203 *
4 2 205 *
返回的计数是 6 => PA 中的 4 行 + 2 行(PA 中不存在 P_ID)。计数的行标有星号 (*)。
最佳答案
试试这个:
SELECT P.ID, COUNT(PA.ID) noOfArticles
FROM P
LEFT JOIN PA ON P.ID = PA.P_ID
GROUP BY P.ID
关于mysql - 来自两个不同表的 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21091664/