[英]How to Show a Table data with Alphabetical Table in Php mySql?
我有一個包含950行數據的字典數據庫。 我想按字母順序在表中按字母順序顯示單詞列表。
對於示例表,a顯示了從A開始的數據的前(5)個字:
A
-------------
Abacus
Abelian group
Abscissa
Absolute Value
Abstract Number
B
---------------
Bar Graph
Base
Base Depth of the Triangular Prism
Base of the Triangular Prism
Basic arithmetic operations
.
.
.
Z
---------------
Z-Intercept
Zero
Zero Divisors
Zero Element
Zone
每5個數據的提取表應停止當前字母並跳轉到下一個字母。
我不知道該怎么做。
我的表結構是
-------------------------
Name | Type
-------------------------
Id | int(3)
Word | varchar(45)
-------------------------
我在下面的查詢中嘗試過,目前限制為3。
簡而言之,我們要做的是- 按排序的單詞分組並限制為n
word_table
CREATE TABLE `offers`.`word_table` ( `Id` INT(3) NOT NULL , `Word` VARCHAR(45) NOT NULL ) ENGINE = InnoDB;
INSERT INTO `word_table` (`Id`, `Word`) VALUES ('1', 'Abacus'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('2', 'Abelian group'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('3', 'Abscissa'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('4', 'Absolute Value'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('5', 'Abstract Number'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('6', 'Bar Graph'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('7', 'Base'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('8', 'Base Depth of the Triangular Prism'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('9', 'Base of the Triangular Prism'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('10', 'Basic arithmetic operations'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('11', 'Z-Intercept'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('12', 'Zero'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('13', 'Zero Divisors'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('14', 'Zero Element'); INSERT INTO `word_table` (`Id`, `Word`) VALUES ('15', 'Zone');
查詢寫入所需的輸出
SELECT x.*
FROM (SELECT t.*,
CASE
WHEN @category != substring(t.Word,1,1) THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@category := substring(t.Word,1,1) AS var_category
FROM word_table t
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY t.Word) x
WHERE x.rank <= 3
ORDER BY `x`.`var_category` ASC
OUTPUT
希望這對您有幫助!!!
您可以使用單個查詢來獲取不同的第一個字符和以該字母為起始字母的所有記錄的結果
SELECT lower(left(filed_name,1)) as letter, group_concat(filed_name) as all_records FROM `table_name` where lower(left(filed_name,1)) in(SELECT DISTINCT LEFT(filed_name, 1) FROM table_name order by filed_name) group by lower(left(filed_name,1)) ORDER BY filed_name ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.