gpt4 book ai didi

MYSQL 计数 : select ALL from users, 事件计数/广告总数(2 个计数)

转载 作者:可可西里 更新时间:2023-11-01 07:28:52 26 4
gpt4 key购买 nike

我有一张用户表和一张分类表

我想从表中选择具有 2 个计数的所有用户:- 活跃的分类广告(classifieds.status = 'A')- 所有分类

我试过这样的:

SELECT u.*, count(c.id) as total_active, COUNT( c2.id ) AS total
FROM `users` u
LEFT join `classifieds` c ON c.user_id=u.id AND c.status = 'A'
LEFT join `classifieds` c2 ON c2.user_id=u.id
GROUP BY u.id

但它没有按预期工作

最佳答案

在 COUNT 中使用 CASE。
ELSE 情况隐含为 NULL,它被 COUNT(column)

忽略
SELECT 
u.*,
count(CASE WHEN c.status = 'A' THEN c.id END) as total_active,
COUNT(c.id) AS total
FROM
`users` u
LEFT JOIN
`classifieds` c ON c.user_id = u.id
GROUP BY
u.id -- fix this

此外,标准 SQL 是对列进行分组或聚合:MySQL GROUP BY 扩展可能会产生误导性结果,因为引擎猜测您想要什么。

SET SQL_MODE = 'ONLY_FULL_GROUP_BY' 试试这个查询看看我的意思...

关于MYSQL 计数 : select ALL from users, 事件计数/广告总数(2 个计数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8652625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com