我需要你的帮助,
仅当子表(取决于父表的ID的另一个表)在php中有行时,才如何从父表中选择?

例如:
我有CATEGORY表和Items表。其中Category是父表并包含ct_id, ct_name,而Items是子表,其中包含it_id, ct_id(链接到父表),it_name

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

谢谢

最佳答案

您可以使用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

关于php - MySQL的:从父表中选择,只有当子表有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50574313/

10-08 22:57