首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两条SQL语句合并为一条

将两条SQL语句合并为一条
EN

Stack Overflow用户
提问于 2020-03-26 02:39:16
回答 4查看 46关注 0票数 0

试图解决以下问题。

我有两条SQL语句:

代码语言:javascript
复制
SELECT TagID, TagTitle, 
COUNT(*) AS TagCount 
FROM TagCategories 
JOIN SocialAndTags 
ON SocialAndTags.TagCategoriesID = TagID
JOIN SocialManagementTracker 
ON SocialAndTags.SMTrackerID = SocialID 
WHERE InitialComment > '2020-01-01 00:00:00.000' 
AND InitialComment < '2020-03-25 23:59:59.999' 
GROUP BY TagTitle, TagID

SELECT TagID, TagTitle, 
COUNT(*) AS TagCount 
FROM TagCategories 
JOIN SocialAndTags 
ON SocialAndTags.TagCategoriesID_OtherA = TagID
JOIN SocialManagementTracker 
ON SocialAndTags.SMTrackerID = SocialID 
WHERE InitialComment > '2020-01-01 00:00:00.000' 
AND InitialComment < '2020-03-25 23:59:59.999' 
GROUP BY TagTitle, TagID

第一个查询给出了以下正确的结果:

代码语言:javascript
复制
TagID | TagTitle | TagCount
1     | PASO     | 26
2     | TUIT     | 1
3     | AST      | 3
4     | IS       | 3
10    | NA       | 17
20    | PSE      | 3
21    | CO       | 40

第二个查询给出了以下结果,这些结果也是正确的:

代码语言:javascript
复制
TagID | TagTitle | TagCount
1     | PASO     | 14
2     | TUIT     | 3
4     | IS       | 3
20    | PSE      | 13
22    | NONE     | 55
23    | Digital  | 2
24    | PCC      | 3

我需要的是让两个结果都出现在一个查询中,但我似乎不知道如何做到这一点。

我的最后一个问题是:

代码语言:javascript
复制
SELECT TagTitle,
COUNT(*) AS TagCount 
FROM TagCategories
LEFT OUTER JOIN SocialAndTags AS OtherA ON OtherA.TagCategoriesID = TagID
LEFT OUTER JOIN SocialAndTags AS OtherB ON OtherB.TagCategoriesID_OtherA = TagID
GROUP BY TagTitle

其中一些结果是正确的,但另一些结果却大错特错。例如,PASO结果是364,应该是40,TUIT结果是3,应该是4

或者,Digital的结果是2,这是正确的,没有55是正确的,这也是正确的

很明显我做错了什么。如有任何帮助,我们将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-03-26 02:48:28

你可以试试这个。

代码语言:javascript
复制
SELECT TagID, TagTitle, 
COUNT(*) AS TagCount 
FROM TagCategories 
    JOIN SocialAndTags ON (SocialAndTags.TagCategoriesID = TagID OR SocialAndTags.TagCategoriesID_OtherA = TagID)
    JOIN SocialManagementTracker ON SocialAndTags.SMTrackerID = SocialID 
WHERE InitialComment > '2020-01-01 00:00:00.000' AND InitialComment < '2020-03-25 23:59:59.999' 
GROUP BY TagTitle, TagID
票数 2
EN

Stack Overflow用户

发布于 2020-03-26 02:48:50

票数 0
EN

Stack Overflow用户

发布于 2020-03-26 02:51:43

您可以将查询合并在一起,并获得计数的总和。例如:

代码语言:javascript
复制
SELECT TagID, TagTitle, SUM(TagCount)
FROM
(
    SELECT TagID, TagTitle, COUNT(*) AS TagCount 
    FROM TagCategories 
    JOIN SocialAndTags ON SocialAndTags.TagCategoriesID = TagID
    JOIN SocialManagementTracker ON SocialAndTags.SMTrackerID = SocialID 
    WHERE InitialComment > '2020-01-01 00:00:00.000' AND InitialComment < '2020-03-25 23:59:59.999' 
    GROUP BY TagTitle, TagID
    UNION ALL
    SELECT TagID, TagTitle, COUNT(*) AS TagCount 
    FROM TagCategories 
    JOIN SocialAndTags ON SocialAndTags.TagCategoriesID_OtherA = TagID
    JOIN SocialManagementTracker ON SocialAndTags.SMTrackerID = SocialID 
    WHERE InitialComment > '2020-01-01 00:00:00.000' AND InitialComment < '2020-03-25 23:59:59.999' 
    GROUP BY TagTitle, TagID
) BothCounts
GROUP BY TagTitle, TagID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60855283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档