我需要你的帮助,
仅当子表(取决于父表的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/