你也可以在整数上使用 like :
MariaDB [sometest]> desc cat;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| lib | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
MariaDB [sometest]> select * from cat where id like '1%';
+------+------------+
| id | lib |
+------+------------+
| 1 | high level |
| 10 | 1 sub 0 |
| 11 | 1 sub 1 |
| 12 | 1 sub 2 |
+------+------------+
4 rows in set (0.00 sec)
MariaDB [sometest]>
但是,我希望我们的子类别永远不会超过 10 个类别。
您可能应该重新审视您的表格布局,并使用自引用记录:
MariaDB [sometest]> create table self (id int not null auto_increment primary key, parent_id int, lib varchar(255));
Query OK, 0 rows affected (0.01 sec)
MariaDB [sometest]> insert into self values ('', '', 'high level 1');
Query OK, 1 row affected, 2 warnings (0.00 sec)
MariaDB [sometest]> insert into self values ('', '', 'high level 2');
Query OK, 1 row affected, 2 warnings (0.00 sec)
MariaDB [sometest]> select * from self;
+----+-----------+--------------+
| id | parent_id | lib |
+----+-----------+--------------+
| 1 | 0 | high level 1 |
| 2 | 0 | high level 2 |
+----+-----------+--------------+
2 rows in set (0.00 sec)
MariaDB [sometest]> insert into self values ('', '1', 'sub level 1');
Query OK, 1 row affected, 1 warning (0.00 sec)
MariaDB [sometest]> insert into self values ('', '1', 'sub level 2');
Query OK, 1 row affected, 1 warning (0.00 sec)
MariaDB [sometest]> insert into self values ('', '1', 'sub level 3');
Query OK, 1 row affected, 1 warning (0.00 sec)
MariaDB [sometest]> select * from self where id=1 or parent_id = 1;
+----+-----------+--------------+
| id | parent_id | lib |
+----+-----------+--------------+
| 1 | 0 | high level 1 |
| 3 | 1 | sub level 1 |
| 4 | 1 | sub level 2 |
| 5 | 1 | sub level 3 |
+----+-----------+--------------+
4 rows in set (0.00 sec)
这样,您可以解除 10 个限制,并拥有更灵活的搜索可能性。我的直觉猜测也是搜索会更快(你应该扩展这个简单的例子,至少在parent_id 上添加一个索引)。