我有两个表用于组和类别我希望返回组和类别,不包括那些没有任何类别的组,这是我写的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值没有任何类别。我需要使用子查询吗?
答案 0 :(得分:2)
您需要做的是将LEFT JOIN
更改为JOIN
:
SELECT
cat_group.subject as group_name , spcat . *
FROM
special_event_groups AS cat_group
JOIN
special_event_categories AS spcat ON cat_group.id = spcat.group_id
AND cat_group.partner_id = spcat.partner_id;
如果未满足加入条件,LEFT JOIN
会显示special_event_groups
中的行,并在NULL
的所选列中附加special_event_categories
个值。另一方面,JOIN
在JOIN
条件未满足时永远不会返回行。您可以阅读@MMMoose评论以获取更多信息。
答案 1 :(得分:1)
您也可以使用OUTER LEFT JOIN
,LEFT JOIN
,JOIN
,这取决于您的数据库版本。
试试这个:
SELECT
cat_group.subject as group_name , spcat . *
FROM
special_event_groups AS cat_group
// LEFT JOIN, OUTER LEFT JOIN, JOIN
special_event_categories AS spcat ON cat_group.id = spcat.group_id
WHERE cat_group.partner_id IS NULL;
让我知道它是否有效