1.between ステートメント:
mysql> select * from 4a where score between 76 and 89; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 钱二 | 19 | 叶平 | 1 | 语文 | 2 | 1 | 79 | | 钱二 | 19 | 贺高 | 2 | 数学 | 2 | 2 | 81 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | +--------+------+--------+------+--------+------+------+-------+ 6 rows in set (0.02 sec)
mysql> select * from 4a where score between 78 and 88; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 钱二 | 19 | 叶平 | 1 | 语文 | 2 | 1 | 79 | | 钱二 | 19 | 贺高 | 2 | 数学 | 2 | 2 | 81 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | +--------+------+--------+------+--------+------+------+-------+ 6 rows in set (0.00 sec)
これら 2 つの例から、実行時の between 節の値の範囲には境界値が含まれていることがわかります。
2.or ステートメント:
mysql> select * from 4a where score=78 or score=88 or score>88 or score<60; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 叶平 | 1 | 语文 | 1 | 1 | 56 | | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 刘一 | 18 | 周磊 | 4 | 物理 | 1 | 4 | 58 | | 钱二 | 19 | 杨艳 | 3 | 英语 | 2 | 3 | 92 | | 张三 | 17 | 叶平 | 1 | 语文 | 3 | 1 | 91 | | 张三 | 17 | 贺高 | 2 | 数学 | 3 | 2 | 47 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 张三 | 17 | 周磊 | 4 | 物理 | 3 | 4 | 56 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 李四 | 18 | 杨艳 | 3 | 英语 | 4 | 3 | 90 | | 李四 | 18 | 周磊 | 4 | 物理 | 4 | 4 | 93 | | 王五 | 17 | 叶平 | 1 | 语文 | 5 | 1 | 46 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | | 王五 | 17 | 周磊 | 4 | 物理 | 5 | 4 | 53 | | 赵六 | 19 | 叶平 | 1 | 语文 | 6 | 1 | 35 | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 93 | +--------+------+--------+------+--------+------+------+-------+ 16 rows in set (0.00 sec)
この例を通して、mysql ステートメントには多くの or 句が存在する可能性があることがわかります。
3.in ステートメント:
mysql> select * from 4a where score in (78,93); +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 刘一 | 18 | 贺高 | 2 | 数学 | 1 | 2 | 78 | | 李四 | 18 | 周磊 | 4 | 物理 | 4 | 4 | 93 | | 王五 | 17 | 杨艳 | 3 | 英语 | 5 | 3 | 78 | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 93 | +--------+------+--------+------+--------+------+------+-------+ 4 rows in set (0.00 sec)
mysql> select * from 4a where score in (score>60); Empty set (0.00 sec)
in ステートメントは括弧内の特定のレコードとのみ一致するようですが、それらを論理的に一致させることはできません。
mysql> select * from 4a where score>85; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 钱二 | 19 | 杨艳 | 3 | 英语 | 2 | 3 | 92 | | 张三 | 17 | 叶平 | 1 | 语文 | 3 | 1 | 91 | | 张三 | 17 | 杨艳 | 3 | 英语 | 3 | 3 | 88 | | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | | 李四 | 18 | 杨艳 | 3 | 英语 | 4 | 3 | 90 | | 李四 | 18 | 周磊 | 4 | 物理 | 4 | 4 | 93 | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 93 | +--------+------+--------+------+--------+------+------+-------+ 7 rows in set (0.00 sec)
明らかに、where の関数は in よりもはるかに強力なので、where のコマンドの優先順位も高くなります。同じ条件では、where の検索範囲は in の検索範囲よりもわずかに広くなります。結局のところ、機能が増えると、検索するものが多くなります。したがって、同じクエリ条件の下では、where の効率は in の効率よりもわずかに悪くなります (もちろん、ほんの少しだけです)。もちろん、in のコマンド優先順位は where よりも低いため、in を使用すると SQL ステートメントでエラーが報告される可能性が高くなります。
and ステートメント:
mysql> select * from 4a where (score>85 and sage=18) and t=2; +--------+------+--------+------+--------+------+------+-------+ | sname | sage | tname | t | cname | s | c | score | +--------+------+--------+------+--------+------+------+-------+ | 李四 | 18 | 贺高 | 2 | 数学 | 4 | 2 | 88 | +--------+------+--------+------+--------+------+------+-------+ 1 row in set (0.00 sec)
この例を通して、mysql ステートメントには多くの and 節が存在する可能性があることがわかります。
以上がmysqlでの条件付き制限文の実装例(1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。