gpt4 book ai didi

sql - 如何使用连接查询两个表并从一个表中获取所有行,并从另一个中获取相关行?

转载 作者:行者123 更新时间:2023-12-01 08:21:03 25 4
gpt4 key购买 nike

简化例如,我有两个表,groupsitems .

items (
id,
groupId,
title
)

groups (
id,
groupTitle,
externalURL
)

我的常规查询是这样的:
SELECT
i.`id`,
i.`title`,
g.`id` as 'groupId',
g.`groupTitle`,
g.`externalURL`
FROM
items i INNER JOIN groups g ON (i.`groupId` = g.`id`)

但是我现在需要修改它,因为所有指定 externalURL 的组 items中不会有任何对应的记录表(因为它们存储在外部)。是否可以进行某种连接,以便输出看起来像这样:
items:
id title groupId
----------------------
1 Item 1 1
2 Item 2 1

groups
id groupTitle externalURL
-------------------------------
1 Group 1 NULL
2 Group 2 something
3 Group 3 NULL

Query output:
id title groupId groupTitle externalURL
---------------------------------------------------
1 Item 1 1 Group 1 NULL
2 Item 2 1 Group 1 NULL
NULL NULL 2 Group 2 something

-- note that group 3 didn't show up because it had no items OR externalURL

这可以在一个 SQL 查询中实现吗?

最佳答案

这正是外连接的用途:返回一个表中的所有行,无论另一个表中是否存在匹配的行。在这些情况下,为另一个表的所有列返回 NULL。

您可以在 WHERE 子句中处理的另一个条件。

SELECT
i.`id`,
i.`title`,
g.`id` as 'groupId',
g.`groupTitle`,
g.`externalURL`
FROM
items i RIGHT OUTER JOIN groups g ON (i.`groupId` = g.`id`)
WHERE i.`id` IS NOT NULL OR g.`externalURL` IS NOT NULL;

仅当两者 i.idg.externalURL为 NULL,则应排除连接结果集的整行。

关于sql - 如何使用连接查询两个表并从一个表中获取所有行,并从另一个中获取相关行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com