gpt4 book ai didi

mysql - 组合两个不相交的 SELECT 查询

转载 作者:行者123 更新时间:2023-11-29 02:22:55 25 4
gpt4 key购买 nike

假设我们有三个表。表 2 和表 3 与表 1 相交,但彼此不相交。 enter image description here

两个单独的 INNER JOIN 查询获取表 1 & 2 和表 1 & 3 之间的公共(public)列值。

现在我的问题是如何将这两个交叉点放在一起;简单地 INNER JOINing 这些表不会产生任何结果:

以下将是一个理想的结果。 enter image description here

这已经接近我想要的结果,但还不够接近。

SELECT * FROM 
(SELECT `tag_map`.`id`,`resource`.`resource_type_id`,`resource`.`title` FROM `tag_map`
INNER JOIN `resource`
ON `tag_map`.`tag_id` = '8'
AND `tag_map`.`entity_type_id`= '1'
AND `resource`.`id` = `tag_map`.`entity_id`) AS t1
INNER JOIN
(SELECT `name`,`location` FROM `tag_map`
INNER JOIN `userinfo`
ON `tag_map`.`tag_id` = '8'
AND `tag_map`.`entity_type_id`= '2'
AND `userinfo`.`id` = `tag_map`.`entity_id`) AS t2

这个查询的问题是 JOIN 子句混合了行,我明白了

enter image description here

最佳答案

您只需要从与其他两个表相交的表开始查询,然后对它们进行LEFT JOIN:

SELECT r.resource_type_id, 
r.title,
u.name
FROM tag_map t
LEFT JOIN userinfo u
ON t.entity_id = u.id
AND t.entity_type_id = '1'
LEFT JOIN resource r
ON t.entity_id = r.id
AND t.entity_type_id = '2'
WHERE ( u.id IS NOT NULL
OR r.id IS NOT NULL )
AND t.entity_type_id IN ( '1', '2' )
AND t.tag_id = '1';

关于mysql - 组合两个不相交的 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28293667/

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