将这些语句与自联接结合起来

时间:2017-03-22 16:50:56

标签: mysql

我已经获得了target_service ID和parse param,我需要使用folloowing sql语句找到其他数据

SELECT 
    Distinct TARGET_ID 
FROM 
    KB_OBJECT_PORTFOLIOS
WHERE 
    TARGET_SERVICE_ID=3780000000000220;

现在我的目标ID = 3780000000000248

SELECT 
    count(*) AS COUNT 
FROM
    KB_OBJECT_PORTFOLIOS 
WHERE 
    TARGET_ID=3780000000000248
AND 
    PARSE_PARAM='bkey=5366349'

我可以将这些全部写为一个sql语句而不是两个。我对嵌套选择的经验是,它们花费的时间太长了。所以,如果你有一个加入的解决方案,那就更好了。

结果应该是

TARGET_ID,       COUNT
3780000000000248, 1

谢谢

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你甚至不需要加入。您可以合并这两个条件(在TARGET_SERVICE_IDPARSE_PARAM上)并选择每个TARGET_ID的计数

select  TARGET_ID, count(*)
from    KB_OBJECT_PORTFOLIOS
where   TARGET_SERVICE_ID=3780000000000220 and
        PARSE_PARAM = 'bkey=5366349'
group by TARGET_ID

答案 1 :(得分:1)

为什么你需要两个查询呢?如果第一个SELECT返回TARGET_ID,并且由于TARGET_SERVICE_ID和TARGET_ID都在同一个表(KB_OBJECT_PORTFOLIOS)中,您可以执行以下操作:

SELECT 
    count(*) AS COUNT 
FROM
    KB_OBJECT_PORTFOLIOS 
WHERE 
    TARGET_SERVICE_ID=3780000000000220
AND 
    PARSE_PARAM='bkey=5366349'