我有一个具有以下值的SQL表:
+---------+----------+
| post_id | path |
+---------+----------+
| 1 | 1/ |
| 2 | 1/2/ |
| 3 | 1/2/3/ |
| 4 | 1/2/3/4/ |
| 5 | 1/2/5/ |
+---------+----------+
我该如何创建一个查询,该查询将获取带有由斜杠分隔的确切值个数的路径?
例如,如果我想所有post_ids所在的路径正是1/%/%/
(其中每个%
代表一个单号),意为形式的任何回报1/2/3/
,1/2/5/
但不1/2/3/4/
。
有几种方法可以做到这一点:
MySQL LIKE运算子。
LIKE运算符提供两个通配符,百分比%(匹配零个或多个字符的任何字符串),下划线_(匹配任何单个字符)。
SELECT * FROM `table` WHERE `path` LIKE '1/_/_/'
SELECT * FROM `table` WHERE `path` LIKE '1/%/%/'
MySQL正则表达式。
SELECT * FROM `table` WHERE `path` regexp '^1/[0-9]/[0-9]/$'
MySQL中的分层数据
由于此结构涉及层次结构数据,因此您可能应该考虑将表结构更改为代表实际层次结构的某种结构。http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/提供了有关该主题的出色教程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句