Mysql 使用SQL,如何获取重复出现两次以上的列?
以下是我尝试的SQL请求:Mysql 使用SQL,如何获取重复出现两次以上的列?,mysql,sql,Mysql,Sql,以下是我尝试的SQL请求: SELECT COUNT(DISTINCT um.user_id) FROM wp_usermeta um LEFT JOIN wp_users u ON um.user_id = u.ID LEFT JOIN wp_posts p ON u.ID = p.post_author AND p.post_status = 'publish' AND p.post_type = 'post' WHERE p.post_date >= '2013-03-15' AND
SELECT COUNT(DISTINCT um.user_id)
FROM wp_usermeta um
LEFT JOIN wp_users u ON um.user_id = u.ID
LEFT JOIN wp_posts p ON u.ID = p.post_author AND p.post_status = 'publish' AND p.post_type = 'post'
WHERE p.post_date >= '2013-03-15'
AND u.user_login NOT LIKE 'LOCKED-%'
AND um.meta_key = 'wp_capabilities'
AND um.meta_value LIKE '%writers%'
AND COUNT(um.user_id) >= 2
最后一行:
AND COUNT(um.user_id) >= 2
正在导致一些错误
有没有办法只获取至少重复出现两次或两次以上的um.user_id?由用户分组,并使用
having
子句对每个组应用聚合函数,如count
select count(*) from
(
SELECT um.user_id
FROM wp_usermeta um
LEFT JOIN wp_users u ON um.user_id = u.ID
LEFT JOIN wp_posts p ON u.ID = p.post_author AND p.post_status = 'publish' AND p.post_type = 'post'
WHERE p.post_date >= '2013-03-15'
AND u.user_login NOT LIKE 'LOCKED-%'
AND um.meta_key = 'wp_capabilities'
AND um.meta_value LIKE '%affiliate_pay_per_publish%'
GROUP BY um.user_id
HAVING COUNT(*) >= 2
) alias_name
按用户分组,并使用
having
子句在每个组上应用聚合函数,如count
select count(*) from
(
SELECT um.user_id
FROM wp_usermeta um
LEFT JOIN wp_users u ON um.user_id = u.ID
LEFT JOIN wp_posts p ON u.ID = p.post_author AND p.post_status = 'publish' AND p.post_type = 'post'
WHERE p.post_date >= '2013-03-15'
AND u.user_login NOT LIKE 'LOCKED-%'
AND um.meta_key = 'wp_capabilities'
AND um.meta_value LIKE '%affiliate_pay_per_publish%'
GROUP BY um.user_id
HAVING COUNT(*) >= 2
) alias_name
基本规则:不能在
where
子句中使用聚合函数。,其中
过滤在过滤每一行以包含到结果集中时完成。在确定所有行之前,无法使用聚合结果,因此您实际上要求DB进行时间旅行。这就是为什么中有
子句,在计算完所有聚合结果后,这些子句会在查询链的末尾应用它们的过滤器。基本规则:不能在where
子句中使用聚合函数。,其中
过滤在过滤每一行以包含到结果集中时完成。在确定所有行之前,无法使用聚合结果,因此您实际上要求DB进行时间旅行。这就是为什么中有子句,在计算完所有聚合结果后,这些子句会在查询链的末尾应用它们的过滤器。我想知道用户的数量,这就是为什么我在select之后放置COUNT(DISTINCT um.user_id)。然后在其周围放置select COUNT
?我以为那只是一个
——我想他们是一样的吧?另外,我认为两个查询通常比一个子查询快。@JackWilliams:您需要为每个子查询指定一个名称。我选择了alias\u name
,但是a
也可以。我想知道用户的数量,这就是为什么我在select之后放置COUNT(不同的um.user\u id)。然后在其周围放置select COUNT
?我以为那只是一个
——我想他们是一样的吧?另外,我认为两个查询通常比一个子查询快。@JackWilliams:您需要为每个子查询指定一个名称。我选择了alias\u name
,但是a
也可以。