我需要你的帮助, 我如何从父表中选择,仅当子表(另一个依赖于父表的id的表)在php中有行?
例如:
我有com.mysql.jdbc.Driver
表和CATEGORY
表。其中Items
是父表并包含Category
,而ct_id, ct_name
是子表,其中包含Items
(链接到父表),it_id, ct_id
PS:我不需要选择项目,但如果有与此表相关联的项目,我只需要类别。
谢谢
答案 0 :(得分:1)
您可以使用INNER JOIN
,它只会在两个表都匹配时返回记录。
SELECT DISTINCT a.* FROM Categories a INNER JOIN Items b on b.ct_id = a.ct_id
但运行子查询更有效:
SELECT *
FROM Categories
WHERE ct_id IN (SELECT ct_id FROM Items);
这是因为在第一个示例中,它必须首先匹配整个表,然后使用DISTINCT
关键字删除所有重复项。第二个示例通过首先扫描子表来避免重复。
这称为Semi Join
。有关详细信息,请参阅此处:https://dev.mysql.com/doc/refman/5.6/en/semi-joins.html