-1

Id と Name の 2 つの列を持つ項目と呼ばれる MySQL のテーブルがあります。名前の最初の文字でフィルタリングして、アイテムを表示したいと思います。これを行うために、次のクエリを使用しています。

Select Id,Name from Items WHERE Name LIKE 'a%'

2 つの質問があります。

1)それを達成するための最良の方法はこれですか?

2) フィルター ビューを作成するには、どの文字がそれで始まるアイテム名を少なくとも 1 つ持っているかを知りたいです。たとえば、「X」で始まるアイテム名はありません。単一のクエリでどれがどれを持っているかをどのように知ることができますか?

ありがとう

4

3 に答える 3

1
  1. インデックスがオンになっている場合Name、クエリは問題ありません。

  2. 名前を持つすべての文字を取得するには

    Select substr(Name, 1, 1) as starting_character
    from Items 
    group by starting_character
    order by starting_character
    
于 2013-07-28T00:39:18.953 に答える
0

... のような大きな OR クエリを実行できます。

 select * from Items where nobre like "A%" or nombre like "B%" or nombre like "C%" //etc etc

ただし、速度とテーブル サイズが問題になる場合は、別の列を作成し、文字値を INT としてその列に入力します。インデックスのようなもの。

したがって、新しい値を挿入するときは、関数をコーディングして最初の文字の文字値を返し、それを新しい列に挿入します。

これで、その整数に基づいて、任意の文字の列をクエリできます。

はっきりと出てきたことを願っています。私は物事を説明するのが苦手なことがあります.....

于 2013-07-28T00:38:22.980 に答える
0

これにより、最初のすべての文字が得られます-1回だけです(したがって、DISTINCT)

SELECT DISTINCT SUBSTR(Name,1,1) FROM Items ORDER BY SUBSTR(Name,1,1)

次に、これを使用してフィルターを作成できます。

于 2013-07-28T00:41:16.583 に答える