我有一个表categories
,其中包含以下字段:
id, content, is_subcategory, topic_id
以下是一组示例数据:
id content is_subcategory reference_id
=============================================
1 Games 0 989898989
2 Xbox 1 1
3 Playstation 1 1
4 Furniture 0 121212121
5 Sofa 1 4
6 Closet 1 4
7 Music 0 989898989
8 Pop 1 7
9 Reggae 1 7
说明:
如果类别是子类别,则其reference_id是父类别的ID。例如,Sofa
有4作为其reference_id,因为4是Furniture的id。
如果类别是父类别,则其reference_id是另一个表topics
的ID。例如,Music
是父类别,其作为reference_id有989898989,这是“娱乐”主题的ID。
如何实现我只能选择父类别为989898989作为其reference_id的子类别?
答案 0 :(得分:1)
你可以像2个不同的表一样:
select * from categories c, categories parent
where c.reference_id=parent.id and parent.reference_id=989898989 and c.is_subcategory = 1
答案 1 :(得分:0)
SELECT * FROM category sub, category super WHERE
sub.reference_id = super.id AND super.reference_id = 989898989
AND sub.is_subcategory = 1
由于您已经发现需要自行加入此问题,我相信您可以理解我的解决方案。如果没有,请告诉我。
答案 2 :(得分:0)
提供不同的别名并尝试
SELECT id,content FROM `categories` Child INNER JOIN
`categories` Parent ON Child.`reference_id` = Parent.`id`
WHERE Parent.reference_id=989898989 and Child.is_subcategory = 1
我想建议内部联接以获得更好的性能。