首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要使用subselect获取一行结果

需要使用subselect获取一行结果
EN

Stack Overflow用户
提问于 2017-01-04 15:27:16
回答 4查看 35关注 0票数 0

sql查询如下:

代码语言:javascript
运行
复制
SELECT 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 1") AS test_1 , 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 2") AS test_2 , 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 3") AS test_3 
FROM `table_name` GROUP BY `content`

并得到如下结果:

代码语言:javascript
运行
复制
test_1, test_2, test_3
2,      7,      0
2,      7,      0
2,      7,      0
2,      7,      0
2,      7,      0
2,      7,      0
2,      7,      0
2,      7,      0
2,      7,      0
2,      7,      0

只需要获得一行结果,如下所示:

代码语言:javascript
运行
复制
test_1, test_2, test_3
2,      7,      0

怎么做?我的查询有什么问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-04 15:30:15

看看这个。

代码语言:javascript
运行
复制
SELECT  distinct 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 1") AS test_1 , 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 2") AS test_2 , 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 3") AS test_3 
FROM `table_name` GROUP BY `content`
票数 1
EN

Stack Overflow用户

发布于 2017-01-04 16:02:23

您的查询应该像这样重写:

代码语言:javascript
运行
复制
SELECT 
    SUM(CASE WHEN `content` = "test 1" THEN 1 ELSE 0 END) AS test_1,
    SUM(CASE WHEN `content` = "test 2" THEN 1 ELSE 0 END) AS test_2,
    SUM(CASE WHEN `content` = "test 3" THEN 1 ELSE 0 END) AS test_3
FROM 
    `table_name`
WHERE 
    `custom_id` IN (10,9,8,6,5,4,3,2,1);
票数 0
EN

Stack Overflow用户

发布于 2017-01-04 15:33:30

只需在SELECT语句中添加TOP子句...

代码语言:javascript
运行
复制
SELECT TOP 1
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 1") AS test_1 , 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 2") AS test_2 , 
(SELECT COUNT(`id`) FROM `table_name` WHERE `custom_id` IN (10,9,8,6,5,4,3,2,1) AND `content` = "test 3") AS test_3 
FROM `table_name` GROUP BY `content`
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41458369

复制
相关文章

相似问题

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