首页
学习
活动
专区
圈层
工具
发布

数连行
EN

Stack Overflow用户
提问于 2020-04-26 12:24:07
回答 3查看 55关注 0票数 0

我想进行一个SQL调用,在其中,我要为每一行计数联接调用中的行数。

代码语言:javascript
复制
SELECT *, COUNT(id_feed.id) as price_count, prices.id as id FROM prices
LEFT JOIN id_feed ON id_feed.id_prices = prices.id
WHERE prices.id_user = :id_user

价格表:

代码语言:javascript
复制
id name  id_user
1  name1 21
2  name2 21
3  name3 4

id_feed表:

代码语言:javascript
复制
id id_prices price
1  1         30
2  1         30
3  1         30
4  2         30
5  2         30
6  3         30

结果

代码语言:javascript
复制
id id_prices price_count
1  name1     3
2  name2     2
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-27 19:52:32

通过连接和聚合:

代码语言:javascript
复制
select p.id, p.name, count(*) price_count
from prices p inner join id_feed i
on i.id_prices = p.id
where p.id_user = :id_user
group by p.id, p.name

演示

id_user = 21结果

代码语言:javascript
复制
> id | name  | price_count
> -: | :---- | ----------:
>  1 | name1 |           3
>  2 | name2 |           2
票数 0
EN

Stack Overflow用户

发布于 2020-04-26 12:25:56

您正在描述窗口函数。就像这样:

代码语言:javascript
复制
SELECT p.*, f.*, COUNT(f.id) OVER () as price_count
FROM prices p LEFT JOIN
     id_feed f
     ON f.id_prices = p.id
WHERE p.id_user = :id_user
票数 0
EN

Stack Overflow用户

发布于 2020-04-26 12:25:59

您似乎希望使用窗口功能:

代码语言:javascript
复制
SELECT prices.*, prices.id as id ,
      count(*) over (partition by id_prices) as price_count
FROM prices LEFT JOIN 
     id_feed 
     ON id_feed.id_prices = prices.id
WHERE prices.id_user = :id_user
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61440710

复制
相关文章

相似问题

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