首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql在给定id和计数值的返回和之间计算不同价格值的行。

Mysql在给定id和计数值的返回和之间计算不同价格值的行。
EN

Stack Overflow用户
提问于 2015-01-26 12:07:33
回答 1查看 615关注 0票数 1

嗨,我有两张桌子,一张是产品,另一张是价目表。

产品表

代码语言:javascript
运行
复制
Id  Name
1   Bike
2   Car
3   Van

价格表

代码语言:javascript
运行
复制
Id Price   Pid
1   100    1
2   150    1
3   200    1
4   100    2
5   110    2
6   120    2
7   300    3
8   310    3

我的Sql查询

代码语言:javascript
运行
复制
$sql = "SELECT SUM(CASE WHEN price >= 0 AND price <= 200 THEN 1 ELSE 0 END) AS `0-2`,
SUM(CASE WHEN price >= 201 AND price <= 500 THEN 1 ELSE 0 END) AS `2-5`,
COUNT(pid) AS `All Values`
FROM price where pid IN(1,2,3)";

运行此查询时,价格计数值如下所示

0-2有(6)计数2-5有(2)计数

但在这里我需要像这样展示。在这里,我希望显示为0-200匹配的两个产品,即1,2 pids等0-2 (2)计数2-5 (1)计数。

因为在价格表中,产品有更多的价格选择,所以每个产品在表中都有2到5个不同的价格,但是我应该把它显示为一个产品的数量,甚至更多的价格。

请告诉我如何编写mysql查询。

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-26 12:28:16

您可以使用COUNT(DISTINCT CASE ..),在THEN子句中使用pid代替1

代码语言:javascript
运行
复制
SELECT 
COUNT(DISTINCT CASE WHEN price >= 0 AND price <= 200 THEN pid END) AS `0-2`,
COUNT(DISTINCT CASE WHEN price >= 201 AND price <= 500 THEN pid END) AS `2-5`,
COUNT(DISTINCT pid) AS `All Values`
FROM price 
WHERE pid IN(1,2,3)

DEMO

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28149835

复制
相关文章

相似问题

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