mysql中在同一表中查找的子查询

mysql中在同一表中查找的子查询,mysql,Mysql,我有一个表格有这个标题 id city date item 我感兴趣的是识别同一个月内相同物品的id,并计算在同一个月内重复接收的物品数量。所以我在mysql中的查询是: select a.id, concat(a.id, month(a.date), a.item) as a from table where a = (select concat(b.id, month(b.date), b.item) as b from table) group by a.id having coun

我有一个表格有这个标题

id city date item
我感兴趣的是识别同一个月内相同物品的id,并计算在同一个月内重复接收的物品数量。所以我在mysql中的查询是:

select a.id, concat(a.id, month(a.date), a.item) as a from table
 where a = (select concat(b.id, month(b.date), b.item) as b from table)
 group by a.id
having count(a=b)>=1

但是这个问题需要太多的时间,可能不起作用,你能帮我吗?

你还没有对三个小时前的评论做出反应。但从您对Seth McClaine的回答的评论中,我了解到您需要一个显示id(尽管其名称不是表的唯一id!)、月份、项目和发生次数的行列表

每个id、月份和项目一行表示:
按id、月份、项目分组

使用
HAVING
子句仅显示事件>1

select id, month(date), item, count(*)
from mytable
group by id, month(date), item
having count(*) > 1;

这是赛斯·麦克莱恩告诉你的。当你对他的答案发表评论时,你并没有说你在接受答案时遗漏了什么。

我认为你应该能够做这样的事情,给你匹配的
id
,和
项目
的总数

Select Count(*) as total,  month(date) as month, item, id 
From table
group by (item,  month(date), id)

id
不是标识记录的唯一id吗?它的名字似乎暗示着这一点。在这种情况下,同一个
id
不能出现两次-每个
id
在表中都是唯一的。请放入表数据或结构您的查询没有意义,我很惊讶它不会导致语法错误(别名b在子查询之外不应为人所知,因此在having子句中不可用。请编辑您的重新查询并显示示例数据和预期结果。很抱歉,@Thorstenketner我对此不了解。id不是唯一的,因为它表示在不同月份收到任何项目的用户的标识,所以这是一个非常糟糕的colu。)mn名称。但是,给出的答案能解决您的问题吗?如果是,接受一个,如果不是,通过添加样本数据和期望的结果来澄清您的问题,这样我们最终知道您的想法。在问题中,用户写道:“同一个月”很好!但是如果id是唯一的,这个例子就不起作用了。没有完全理解为使用id。我同意,但是基于OPs潜在的“工作示例”他们没有使用唯一的id。我假设id是用来描述项目,而不是主键| id | city | date |项目,按照标题的顺序给出一个示例日期是:第1行:1 |波哥大| 2016-10-01 | 2;第2行:2 | cali | 2016-02 | 1;第3行:1 |波哥大| 2016-10-12 | 2。我需要在dif中重复id 1的情况不同日期在同一个月收到相同的项目。例如,他/她在10月份收到项目2,因此我需要一个查询,显示不同id以及该项目在同一个月出现的次数。@YanethGil在您的示例中,您有与您的项目相关的重复id,它们都将是相同的id。谢谢@Thorste凯特纳:我想这需要一个更复杂的问题来回答。我生活的这一部分叫做幸福!!