2011-10-18 195 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