[英]What's wrong with this MySQL Query
我有这张桌子。
id name parents
1 Apparel
46 Apparel 1
47 Child Apparel 1,46
49 Child Apparel 2 46,1
我试过这个查询,它工作正常。
SELECT * FROM categories WHERE 1 IN (parents)
id name parents
46 Apparel 1
47 Child Apparel 1,46
为什么此查询带来1条记录而不是2条记录?
SELECT * FROM categories WHERE 46 IN (parents)
id name parents
49 Child Apparel 2 46,1
您应该使用FIND_IN_SET
而不是IN:
SELECT * FROM categories WHERE FIND_IN_SET('46', parents)
请注意,此查询将很慢。 您应该重新设计数据库。 我建议您查看此幻灯片,以了解在MySQL中存储分层数据的更好方法:
如果您要维护类别表,则有一种维护该表的方法。
父级中的根类别仅包含1个子类别,父级中包含根类别的值
因此,正如您所提到的,父列仅保持1值,而不是1值
您还可以使用递归函数获取该记录
function showlist($parent) {
$result = mysql_query("SELECT ID FROM categorie WHERE parentID='$parent'");
while ($line = mysql_fetch_array($result)) {
if($catlistids!=""){ $catlistids .= ", "; }
$catlistids .= $line["ID"];
showlist($line["ID"]);
}
return $catlistids;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.