Php Mysql:仅当子表有行时,才从父表中选择

Php Mysql:仅当子表有行时,才从父表中选择,php,mysql,mysqli,Php,Mysql,Mysqli,我需要你的帮助, 仅当子表(另一个依赖于父表id的表)在php中有行时,如何从父表中进行选择 例如: 我有类别表格和项目表格。其中,Category是父表,包含ct\u id,ct\u name,而Items是子表,包含it\u id,ct\u id(链接到父表),it\u name PS:我不需要选择项目,但只有当有项目链接到此表时,我才需要类别。 谢谢您可以使用内部联接,它只在两个表上都匹配时返回记录 SELECT DISTINCT a.* FROM Categories a INNER J

我需要你的帮助, 仅当子表(另一个依赖于父表id的表)在php中有行时,如何从父表中进行选择

例如: 我有
类别
表格和
项目
表格。其中,
Category
是父表,包含
ct\u id,ct\u name
,而
Items
是子表,包含
it\u id,ct\u id
(链接到父表),
it\u name

PS:我不需要选择项目,但只有当有项目链接到此表时,我才需要类别。


谢谢

您可以使用
内部联接
,它只在两个表上都匹配时返回记录

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
关键字去除所有重复项。第二个示例通过首先扫描子表来避免重复


这被称为
半连接。查看此处了解更多信息:

这将是一个
左外连接
@smith你能给我举个例子吗?如何使用它?