命中率が高いほど戦略が優れています
データベース作業のファジークエリ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 では、% と _ は両方ともファジー クエリに使用されるワイルドカード文字ですが、その使用法は異なります。
- - %: 任意の数の文字 (0 文字を含む) を表します。たとえば、「Li%」は「Li」、「Lily」、「Lion」などと一致します。
- - : 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 ,FROM ‘table——name’ where zy =“名称”
SELECT `sname`,`zy`,`jf` FROM (SELECT `sname`, `zy`,`jf`
FROM `stu_stu1`)AS sss WHERE `zy`='计算机应用'
select '' AS ,'' AS ,FROM ‘table——name’ where zy =“名称”
SELECT `sname`,`zy`,`jf` FROM (SELECT `sname`, `zy`,`jf`
FROM `stu_stu1`)AS sss WHERE `zy`='计算机应用'