mysql - 来自两个不同表的 COUNT

标签 mysql sql select count group-by

这是一个时髦的问题,我知道这一点。也许这都是因为我真的很累。

现在,不要责怪设计 - 它有缺陷,但我无能为力,好吗?

  • 两个表,由一个 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/

相关文章:

jquery - 当我在选择上使用向上或向下箭头时,为什么 jquery 更改事件不触发?

python - 在python中执行查询之前设置游标对象的限制

php - 如何在单个查询中发送此 SQL 语句?

mysql - GROUP BY MySQL中GROUP BY返回的行数

java - 如何为 6、6.6 和 6.6.6 等过滤器定义正则表达式?

sql - 如何从 Postgres 中的时间戳列获取微秒精度的纪元?

sql - Perl DBI SQL 字符串错误

php - 检查选择中的总和值

javascript - 在meteor javascript中选择了错误的选项值

c# - 在Mysql中使用正确的语法错误