我有一个带有此标题的表
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
但是这个查询需要花费太多时间而且可能无效,你能帮助我吗?
答案 0 :(得分:0)
你对三小时前的评论没有反应。但是从你对Seth McClaine的回答中我得知你想要一个显示id的行列表(,尽管它的名字不是表格的唯一ID!),月份,项目和出现次数。
每个ID,月和项目占一行意味着:group by id, month, item
。
使用HAVING
子句仅显示出现> 1。
select id, month(date), item, count(*)
from mytable
group by id, month(date), item
having count(*) > 1;
嗯,这就是Seth McClaine已经告诉你的事情。虽然你评论了他的答案,但你并没有说出它缺少什么让你接受它。
答案 1 :(得分:0)
我认为你应该可以做这样的事情,给你id
项匹配month
,item
和Select Count(*) as total, month(date) as month, item, id
From table
group by (item, month(date), id)
.text
start:
lui $t8, 0xffff ; load $t8 with -1
ori $t8, $t8, 0xffff
addu $t9, $t8, $0 ; copy to $t9 for bit inversion
addiu $t0, $0, 0x0000
loop1:
addiu $t8, $t8, 1 ; increment counter
sw $t8, 0($t0) ; store counter at location $t0
addiu $t0, $t0, 4 ; add 4 to memory pointer $t0
sltiu $at, $t8, 3 ; loop until we抳e done 4 loops
bne $at, $0, loop1
loop2:
addiu $t0, $t0, -4 ; subtract 4 from memory pointer
lw $t5, 0($t0) ; load value
xor $t5, $t5, $t9
sw $t5, 0($t0) ; store it back
addiu $t8, $t8, -1 ; Update counter
beq $t8, $t9, loop3 ; Do it 4 times
j loop2
loop3:
halt ; Stop the code
{{1}}