データベースのファジークエリ

命中率が高いほど戦略が優れています

データベース作業のファジークエリ918

SQL では、LIKE キーワードを使用してファジー クエリを実装できます。LIKE キーワードの後に​​パターンを続けることができます。% は任意の数の文字を表し、_ は 1 文字を表します。

たとえば、students という名前のテーブルで、名前が Li で始まるすべての学生を検索する場合は、次のように実行できます。

SELECT * FROM students WHERE name LIKE 'Li%';

名前に Li が含まれる生徒を検索するには、次のようにします。

SELECT * FROM students WHERE name LIKE '%Li%';

名前の長さが 3 で、2 番目の文字が i である生徒を検索したい場合は、次のようにします。

SELECT * FROM students WHERE name LIKE '_i%';

% と _ の違い

SQL では、% と _ は両方ともファジー クエリに使用されるワイルドカード文字ですが、その使用法は異なります。

  1. - %: 任意の数の文字 (0 文字を含む) を表します。たとえば、「Li%」は「Li」、「Lily」、「Lion」などと一致します。
  2. - : 1文字を表します。たとえば、「Li」は「Lily」と一致しますが、「Li」や「Lion」とは一致しません。

それらの違いを示す例を次に示します。

SELECT * FROM students WHERE name LIKE 'Li%'; -- 匹配所有以'Li'开头的名字
SELECT * FROM students WHERE name LIKE 'Li_'; -- 只匹配名字为三个字符,且以'Li'开头的名字

単一テーブルの無条件クエリ形式

ここに画像の説明を挿入します

DISTINCT キーワードは、一意のレコードを返すために使用されます。結果セットから重複行を削除します。

たとえば、「students」というテーブルに「major」という列がある場合、DISTINCT を使用してさまざまな専攻をすべて検索できます。

SELECT DISTINCT major FROM students;

これにより、学生テーブルに同じ専攻の学生が複数いる場合でも、各専攻が 1 回だけ表示されるリストが返されます。

DISTINCT キーワードはすべての列に適用されることに注意してください。たとえば、複数の列を選択した場合、DISTINCT は一意の行の組み合わせを返します。

SELECT DISTINCT major, year FROM students;

これにより、すべての一意のメジャーと年の組み合わせが返されます。2 人の学生が同じ専攻と学年を持っている場合、結果セットには 1 回だけ表示されます。

例:

ここに画像の説明を挿入します

ソートの書き方

SQL では、ORDER BY キーワードを使用してクエリ結果を並べ替えることができます。1 つ以上の列に基づいて並べ替えることができ、昇順 (ASC) または降順 (DESC) 順序を指定できます。

たとえば、students というテーブルがある場合、name 列で昇順に並べ替えることができます。
SELECT * FROM students ORDER BY name ASC;
名前列を降順に並べ替えることもできます。
SELECT * FROM students ORDER BY name DESC;
複数の列で並べ替える場合は、ORDER BY の後にカンマで区切って列をリストします。

たとえば、最初に専攻で並べ替えてから、各専攻内の名前で並べ替えることができます。

SELECT * FROM students ORDER BY major ASC, name ASC;

ここに画像の説明を挿入します

データベースには最初の 5 行と最初の 5 行の入力のみが必要です

SELECT * FROM table_name LIMIT 5;
或者(等价于)
SELECT * FROM table_name LIMIT 0,10;

ここに画像の説明を挿入します

次に出力されたポイント*2をソートします。

ここに画像の説明を挿入します

ポイントが急上昇

方法 1:

(1)ケース

SELECT `sname`,`zy`,`jf`, 
   CASE 
     WHEN `zy` LIKE '%应用%' THEN `jf`+ 10 
     WHEN `zy` LIKE '%1%' THEN `jf` + 20 
      ELSE `jf`
     END AS updated_points 
FROM `stu_stu1`

(2)IF

SELECT `sname`, `zy`, `jf`,
       IF(`zy` LIKE '%应用%', `jf` + 10,
       IF(`zy` LIKE '%1%', `jf` + 20, `jf`)
       ) AS updated_points
FROM `stu_stu1`

ここに画像の説明を挿入します

方法 2

SELECT `sname`,`zy`,`jf`, 
   CASE 
     WHEN `zy` LIKE '%应用%' THEN `jf`+ 10 
     WHEN `zy` LIKE '%1%' THEN `jf` + 20 
      ELSE `jf`
     END AS updated_points 
FROM(
    
    )AS sss
select '' AS ,'' AS ,FROMtable——name’ where zy =“名称”
SELECT `sname`,`zy`,`jf` FROM (SELECT `sname`, `zy`,`jf`
    FROM `stu_stu1`)AS sss WHERE `zy`='计算机应用'
select '' AS ,'' AS ,FROMtable——name’ where zy =“名称”
SELECT `sname`,`zy`,`jf` FROM (SELECT `sname`, `zy`,`jf`
    FROM `stu_stu1`)AS sss WHERE `zy`='计算机应用'

おすすめ

転載: blog.csdn.net/m0_74154295/article/details/133077183