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)
由这两个例子我们可以看出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实现条件限制语句的实例(一)的详细内容,更多请关注php中文网其它相关文章!
……