我正在尝试将“查找数据”附加到主记录文本/说明字段,因此它看起来像这样:
这是说明文字
的 LookUpName1:
LookupValue1
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
但是我的目标是添加附加多个查找表,如果我将它们添加到内部联接中,我自然只会得到那些/所有LookupTable都有记录的记录。
另一方面,当我尝试Join
或Left Join
时,我在Group by J.ID
上收到错误。
我的目标是将任何现有的查找表值附加到所有描述中。现在我所能实现的只是返回包含所有Lookup表值的附加描述。
答案 0 :(得分:0)
如果on
条款位于&#34;右侧&#34;位:
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(mis)功能。对于内部联接,on
子句是可选的。不要问我为什么MySQL设计师认为inner join
和cross join
在语法上应该是等价的。每个其他数据库都需要on
的{{1}}子句。使用inner join
表达cross join
非常容易。
但是,on 1=1
需要on
子句,因此当您切换到left join
时,编译器会出现非正统语法问题。真正的问题是缺少left join
条款;这恰好出现在&#34;我还没有期待on
。&#34;使用更加传统的语法,每个group by
后跟join
,可以解决问题。