MySQL 查詢:從每個類別中選擇前兩篇文章
在MySQL 中,通常可以實現從表中提取指定數量的行使用LIMIT 子句。但是,當要求基於分組選擇多行時,需要採用不同的方法。本文解決了一個特定場景,即從表中的每個類別中選擇兩行。
最初,使用者嘗試透過建立一個檢視來限制行,然後使用子查詢來檢索所需的行來實現此目的記錄。然而,這種方法只回傳了兩條記錄。
解決方案在於利用通常所說的視窗函數。 MySQL 本身不支援視窗函數,但可以使用使用者定義的變數來模擬其功能,如下所示:
SELECT x.* FROM ( SELECT t.*, CASE WHEN @category != t.category THEN @rownum := 1 ELSE @rownum := @rownum + 1 END AS rank, @category := t.category AS var_category FROM TBL_ARTIKUJT t JOIN (SELECT @rownum := NULL, @category := '') r ORDER BY t.category ) x WHERE x.rank <= 3;
在此修訂後的查詢中:
這種方法有效地模擬視窗函數來分組並從每個類別中選擇所需的行。如果目的是僅檢索原始列,則可以修改外部查詢以指定特定列名稱而不是 x.*.
以上是如何在MySQL中選擇每個類別的前兩篇文章?的詳細內容。更多資訊請關注PHP中文網其他相關文章!