我有一個MySql表,它有兩列,分別是類別和名稱。我有4個獨特的類別值,此表中有數千條記錄。但是,所有這些記錄都屬於表中列出的四個類別之一。基於列值獲取mysql查詢結果
現在,我想要的是,作爲輸出,我應該得到2個結果的每個類別,即2個結果的第一類,然後2個結果的下一個類別等等。
單個查詢可能嗎?
我有一個MySql表,它有兩列,分別是類別和名稱。我有4個獨特的類別值,此表中有數千條記錄。但是,所有這些記錄都屬於表中列出的四個類別之一。基於列值獲取mysql查詢結果
現在,我想要的是,作爲輸出,我應該得到2個結果的每個類別,即2個結果的第一類,然後2個結果的下一個類別等等。
單個查詢可能嗎?
set @num := 0, @cat := '';
select category,name
@num := if(@cat = category, @num + 1, 1) as row_number,
@cat := category as dummy
from MyTable
group by cateogry, name
having row_number <= 2;
這就是我要去的地方,但是按分組的方式使用非聚集的聚集...您是否測試了這個?難道它不僅僅是通過組獲取行號的第一個條目(除非添加了row_number列)。另外,根據我對海報的提問,應該有一些限制,以防止通過完整的文件。 – DRapp
這是怎麼回事?
SELECT * FROM your_table WHERE category = 1 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 2 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 3 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 4 LIMIT 2
你能告訴你的表結構,一些樣本數據和你所期望的。你的問題被標記爲每個組的最大值,這通常不是一個標準查詢,因爲它是一個可以用SQL變量完成的迭代過程,但也應該受到限制,所以你不會瀏覽整個表的內容可能是數百萬條記錄...只是在最差的情況下,最後30天左右的條目。 – DRapp