【问题标题】:count records is not giving the right number计数记录没有给出正确的数字
【发布时间】:2017-03-22 21:25:25
【问题描述】:

当我输入以下查询时

SELECT
    COUNT(*) AS COUNT
FROM
    OP_table OP
WHERE
    OP.TARGET_ID= 4330000000000369;

我数到了 55

当我尝试在连接中使用它时

SELECT
    TS.TARGET_ID, T.TARGET_NAME, T.TARGET_PUBLIC_NAME, count( DISTINCT OP.OP_ID) AS OP_COUNT
FROM
    TS_table TS
INNER jOIN
     T_table T
ON
    T.TARGET_ID = TS.TARGET_ID
OUTER JOIN
    OP_TABLE OP
ON
    OP.TARGET_ID = T.TARGET_ID
WHERE
    TS.TARGET_SERVICE_ID = number

然后我得到

TARGET_ID,    TARGET_NAME,    TARGET_PUBLIC_NAME,    OP_COUNT
number,       target name,    Ebook Central History  33781

计数为 33781。我想使用第二个函数结构,但正确计数为 55

由于某种原因,它获取的是 Target_id 而不是 Target_service ID 的计数

我还注意到,如果我输入以下内容

SELECT
    COUNT(*) AS COUNT
FROM
    KB_OBJECT_PORTFOLIOS OP
WHERE
    OP.TARGET_ID=4330000000000383;

该数字对应的位置将产生结果 33781。

在加入的某个地方,它正在摆脱目标 ID 4330000000000369 并使用不同的目标 ID 4330000000000383

【问题讨论】:

  • 我认为你的内部连接应该是WHERE OP.TARGET_ID= 4330000000000369而不是WHERE TS.TARGET_SERVICE_ID = number
  • 上述查询只会产生语法错误,因为您没有指定外部查询是左还是右。

标签: mysql


【解决方案1】:

好吧,我被愚蠢的列名 OP.target_ID = TS.target_service_id 而不是 TS.target_ID 搞混了...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多