我有一个关于MySQL的表,称为带有2列的项:Id和Name。我想显示我的项目,按名称首字母过滤。为此,现在我正在使用此查询:
Select Id,Name from Items WHERE Name LIKE 'a%'
我有两个问题:
1)这是实现这一目标的最佳方法吗?
2)要创建过滤器视图,我想知道哪些字符至少有一个以它开头的项目名称。例如,我没有任何以“X”开头的项目名称。我怎么知道哪一个有一个查询?
由于
答案 0 :(得分:1)
如果您有Name
的索引,那么您的查询就可以了。
获取具有姓名的所有字符
Select substr(Name, 1, 1) as starting_character
from Items
group by starting_character
order by starting_character
答案 1 :(得分:0)
您可以运行像...这样的大型OR查询。
select * from Items where nobre like "A%" or nombre like "B%" or nombre like "C%" //etc etc
但是如果速度和表格大小是一个问题,我会创建另一个列,只需将字母值作为INT输入到该列中。有点像索引。
因此,当您插入任何新值时,只需编写函数代码以返回第一个字母的字母值,然后将其插入新列。
现在,您可以根据该整数查询列中的任何字母。
希望清楚地说出来,我不太善于解释事情......
答案 2 :(得分:0)
这将为您提供所有第一个字符 - 仅一次(因此为DISTINCT)
SELECT DISTINCT SUBSTR(Name,1,1) FROM Items ORDER BY SUBSTR(Name,1,1)
然后您可以使用它来创建过滤器。