gpt4 book ai didi

mysql - 当某些表为空时如何进行多重连接

转载 作者:行者123 更新时间:2023-11-29 17:50:59 24 4
gpt4 key购买 nike

我正在尝试将“查找数据”附加到主记录文本/描述字段,因此它看起来像这样:

这是描述文本

LookUpName1:
查找值1
LookupValueN

这与 Inner Join 配合得很好,就像这样

Select J.id, Concat('<b>LookUpName</b>:<br>',group_concat(F.LookUpValue SEPARATOR '<br>')) 
from MainTable J Inner Join
LookUpTable L Inner Join
LookUpValuesTable F
On J.ID = L.JobID and F.ID = L.FilterID
Group by J.ID

但是,我的目标是添加附加多个查找表,如果我将它们添加到此作为内部联接,我自然只会获得两个/所有查找表都有记录的记录。

另一方面,当我尝试 JoinLeft Join 时,我在 Group by J.ID 上遇到错误。

我的目标是将任何现有的查找表值附加到所有描述中。现在我所能实现的就是返回包含所有查找表值的附加描述。

最佳答案

如果 on 子句位于“正确”的位置,您的查询将有效:

select J.id,
Concat('<b>LookUpName</b>:<br>', group_concat(F.LookUpValue separator '<br>'))
from MainTable J left join
LookUpTable L
on J.ID = L.JobID left join
LookUpValuesTable F
on F.ID = L.FilterID
group by J.ID;

您的查询的问题是 MySQL(错误)功能造成的。对于内连接,on 子句是可选的。不要问我为什么 MySQL 设计者认为内连接交叉连接在语法上应该是等价的。所有其他数据库都需要一个 on 子句来进行内连接。使用 on 1=1 表达交叉连接非常简单。

但是,左连接需要on子句,因此当切换到左连接时,编译器会出现问题使用非正统的语法。真正的问题是缺少 on 子句;这恰好显示为“我还没想到 group by”。使用更传统的语法,每个 join 后跟一个 on 应该可以解决这个问题。

关于mysql - 当某些表为空时如何进行多重连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49337759/

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