【发布时间】:2014-02-26 17:12:56
【问题描述】:
我有两个用于组和类别的表,我想返回组和类别,不包括那些没有任何类别的组,这里是我写的 SQL:
SELECT
cat_group.subject as group_name , spcat . *
FROM
special_event_groups AS cat_group
LEFT JOIN
special_event_categories AS spcat ON cat_group.id = spcat.group_id
AND cat_group.partner_id = spcat.partner_id;
它返回我没有任何类别的具有 NULL 值的组记录。我需要使用子查询吗?
【问题讨论】:
-
把
LEFT JOIN改成JOIN? -
是的,将左连接更改为连接或内连接(尽管它们是相同的)
-
@piotrekkr 非常感谢朋友们的帮助!你们中的任何人都可以添加这个作为答案,以便我可以标记它吗?
-
如果您不熟悉
JOIN语法,我发现Venn Diagram representations of joins 之类的内容非常有助于获得基本理解。 Martin Smith's answer 和 Cade Roux's answer 都很好地解释了维恩图的局限性/缺点,并提供了有趣的响应和替代方案。这些是学习更多关于 SQL 连接的相当不错的资源。 -
你也可以使用OUTER LEFT JOIN,LEFT JOIN,JOIN,这取决于你的数据库版本