2011-10-18 158 views
0

已经阅读了几天,现在似乎无法得到我的问题在这里。MYSQL查询问题搜索

让我给你我的DB的见解:

table1的代码:

id CODE 
1 D0G08H13L12 
2 D1G12H10L12 
3 D0G10H12L11 
4 D1G10H10L09 
5 D0G08H13L12 
6 D1G12H10L12 
7 D0G08H13L12 
8 D1G10H10L09 
9 D0G08H13L12 
10 D1G12H10L12 


现在即时搜索的查询数至极代码发生D0G08H13L12后最,在这样搜索下一个记录我的答案从查询将是:

3 times D1G12H10L12 
1 time D1G10H10L09 

这是我现在直到现在,我想我必须使用subque但我不太清楚。

SELECT id, code, COUNT(code) FROM table1 WHERE id IN ($idprint +1) GROUP BY code 
ORDER BY COUNT(code) DESC 

可以任何你的数据库专家的帮助我在良好的方向吗?

谢谢!

桑德

+0

“D0G08H13L12后出现最多的代码”是否代表ID> 5的代码? –

+0

此查询将返回所有的代码和它的计数,你想排除D0G08H13L12,或者你想排除最高发生的那个 –

+0

感谢您的快速回复,这个想法是找到发生在D0G08H13L12发生后最多的代码所以ID不重要。 – user1000911

回答

0

试试这个:如果你想有

SELECT COUNT(id) tot, `code` 
FROM your_table 
GROUP BY `code` 
HAVING tot <= 
    (SELECT COUNT(id) FROM your_table 
    WHERE code = 'D0G08H13L12') 
    AND code <> 'D0G08H13L12' 
ORDER BY tot DESC 

只有两个记录追加这查询:

LIMIT 2 
+0

@ user1000911:尝试我的查询并告诉我它是否有效:) – Marco

+0

#1064 - 您的SQL语法有错误;检查对应于您的MySQL服务器版本的手册,以便在'GROUP BY'代码附近使用正确的语法'HAVING tot <(SELECT COUNT(id)FROM 我收到此错误,即时在版本5.5.13上,并使用php myadmin 3.4 .3.1 – user1000911

+0

@ user1000911:我刚刚测试过它,它的工作原理!您是否更改表名? – Marco

0

试试这个,这将要给你想要的结果...

Select id, code, count(code) 
from table1 
where id>(select max(id) from table1 where code =D0G08H13L12) group by code order by count(code) desc; 
+0

嗨莎莎谢谢你,查询作品我认为,但不完全。 在我的完整数据库中,我有4600次出现D0G08H13L12,但它只计算了总共17次查询。如果id总结所有的总数应计数到4600. – user1000911

+0

嘿,我的查询工作在最后发生的D0G08H13L12后,我认为是你的要求存在的行。 如果其明确然后罚款请详细说明什么你想 –

+0

我认为这个查询只为D0G08H13L12发生了一次,但是它喜欢用它来检查表中所有D0G08H13L12的发生。 我希望这可以帮助,thx! – user1000911

0
select min(x.id), x.code 
from yourTable x, 
    (
    select * from yourTable 
    where code = 'D0G08H13L12' 
) v 
where 
    x.id > v.id 
group by v.id 

获取输入的最多下一个代码。

+0

我认为这是伎俩谢谢!你也可以让它数过吗?因为现在它只显示ID和输出,我认为所有记录。但它不包括总数 – user1000911