首頁  >  文章  >  資料庫  >  mysql實作條件限制語句的實例(一)

mysql實作條件限制語句的實例(一)

黄舟
黄舟原創
2017-09-09 14:54:271576瀏覽

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)

由這兩個例子我們可以看出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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn