我有这张桌子.
id name parents
1 Apparel
46 Apparel 1
47 Child Apparel 1,46
49 Child Apparel 2 46,1
Run Code Online (Sandbox Code Playgroud)
我尝试了这个查询,它工作正常.
SELECT * FROM categories WHERE 1 IN (parents)
id name parents
46 Apparel 1
47 Child Apparel 1,46
Run Code Online (Sandbox Code Playgroud)
为什么这个查询带来1条记录而不是2条?
SELECT * FROM categories WHERE 46 IN (parents)
id name parents
49 Child Apparel 2 46,1
Run Code Online (Sandbox Code Playgroud)
您应该使用FIND_IN_SET而不是IN:
SELECT * FROM categories WHERE FIND_IN_SET('46', parents)
Run Code Online (Sandbox Code Playgroud)
请注意,此查询将很慢.您应该重新设计数据库.我建议你看一下这个幻灯片,以便更好地在MySQL中存储分层数据: