我有一个包含以下值的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>形式的任何内容1}},1/2/3/
,但不是1/2/5/
。
答案 0 :(得分:1)
答案 1 :(得分:0)
有几种方法可以做到这一点:
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/有一个关于这个主题的优秀教程。