表内的内连接

时间:2015-10-16 07:16:23

标签: mysql sql

我有一个表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的类别?

3 个答案:

答案 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 

我想建议内部联接以获得更好的性能。