选择所有相关产品

时间:2016-04-06 11:37:06

标签: mysql sql

我有一个名为teachings的表格:

idnamedescription

products表: idnamedescriptionteachingID

我想从具有与之相关的产品的教义中选择所有内容。如果产品表中没有产品的教学,我不想要它。

到目前为止,我提出了:

SELECT * FROM `teachings`
LEFT JOIN `products` ON `products`.`teachingID` = `teachings`.`id`
WHERE COUNT(`products`) > 0

但那不起作用:(有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

如果您只想返回与至少一个与之关联的产品的教学,请使用exists子查询。这样您就无需按教学计算产品。

我的mysql生锈但这应该

select *
from teachings t
where exists
(
   select 1
   from products p
   where p.teachingID = t.id
)

答案 1 :(得分:1)

这是一个额外的答案,只是为了显示我在评论中讨论的IN子句。任务非常简单:获取存在产品记录的教学记录。换句话说:获取产品表中 中提到的教学记录。因此,在这里使用EXISTSIN

加入表格只会混淆正在做的事情,所以不要这样做。

EXISTS查询:

select *
from teachings t
where exists (select * from products p where p.teachingid = t.id);

IN查询,更具可读性,因为子查询与主查询无关:

select *
from teachings t
where id in (select teachingid from products p);