Mysql 选择计数(*)所在的id>;X?-如何从表中有超过X条记录的任何用户处获取记录?
显然,标题中的查询不起作用,但它可能以一种天真的方式说明了我想做什么。我有一个表,其中包含一些由id列标识的用户。此id在数据库中不是唯一的。它标记可能在我的表中有多条记录的用户 如何显示表中有10条以上记录的所有用户(由id标识)的整个记录?以下是如何显示的:Mysql 选择计数(*)所在的id>;X?-如何从表中有超过X条记录的任何用户处获取记录?,mysql,count,subquery,Mysql,Count,Subquery,显然,标题中的查询不起作用,但它可能以一种天真的方式说明了我想做什么。我有一个表,其中包含一些由id列标识的用户。此id在数据库中不是唯一的。它标记可能在我的表中有多条记录的用户 如何显示表中有10条以上记录的所有用户(由id标识)的整个记录?以下是如何显示的: CREATE TABLE mytable_clean AS SELECT * FROM mytable WHERE id IN( SELECT id FROM (SELECT id,COUNT(*) AS appearance
CREATE TABLE mytable_clean AS
SELECT * FROM mytable WHERE id IN(
SELECT id FROM
(SELECT id,COUNT(*) AS appearance
FROM mytable
GROUP BY id) AS id_count
WHERE id_count.appearance > 9 )
它确实有效。它不慢,但在我看来有点笨拙。欢迎使用更好的解决方案:)使用拥有而不是其中的:
SELECT id
FROM (
SELECT id, COUNT(*) as cnt
FROM sowewhere
GROUP BY id
HAVING cnt > 1
) temp_table
如果您只需要id,请从一开始就删除COUNT(*),但我将其放在那里是为了显示表中每个id的总数。我真的不知道为什么,但与我的相比,这真的很长。@ran2-long?什么意思?慢,该死。我不知道我当时在想什么。也许我想写的时间比我的长。不过,猜对了;)这里的这个查询速度非常快,结果与我的查询完全相同。虽然它当然更优雅;)。为什么与Ishtar的方法相比,这个微小的差异会导致如此大的差异?这与我的方法完全相同,只是我的方法没有额外的SELECT语句。为什么需要额外的SELECT?我不需要它,它只允许您使用最外层的SELECT按非聚合列排序。
SELECT id, COUNT(*) FROM Table GROUP BY id HAVING COUNT(*) > 10
SELECT * FROM user
WHERE id IN (SELECT id FROM user GROUP BY id HAVING COUNT(*) > 10)