我有两个名为account和assignedgroup的表。在帐户表中有两列名为ID和sourceaccount,在分配组中,我有两列名为ID和assignedgroup。
我想通过加入帐户和已分配的组表来选择ID。我做了这样的事情:
select a.ID
from account a
left outer join assignedgroup b
on a.sourceaccount = b.assignedgorup
但是我得到Null作为输出的原因是sourceaccount中的值就像这样
sourceaccount:
sample
sample
而指定组中的值与此类似
assignedgroup:
sample-L1
sample-P-L1
任何人都可以帮我解决如何加入这两个表的问题吗?
我想在sourceaccount和assignedgroup中都有样本值时获取所有ID。
它将样本与样本-L1进行比较,因为它们不相等,它返回null但是我想要ID,即使它具有这样的值。我的意思是如果列值的某些部分匹配,那么我也希望显示这些值
答案 0 :(得分:1)
SELECT a.id
FROM account a
LEFT JOIN
assignedgroup b
ON b.assignedgorup LIKE a.sourceaccount + '-%'
答案 1 :(得分:0)
显然,您的数据库结构存在缺陷。如果您需要将已分配组的第一部分加入源帐户,则应将其存储在单独的列中。你可以做一些操作来获得正确的值,但更改数据库结构是最好的解决方法,因为你在连接中进行的任何数据操作都非常昂贵(并且可能会引入错误)。
答案 2 :(得分:0)
由于这两个表中的实际数据实际上并不匹配,因此除非您开始对这些表中数据的性质做出一些相当广泛的假设,否则不能在这些表中加入这些行。例如,这可能有效:
SELECT a.ID
from Account a
left outer join AssignedGroup b
on a.sourceaccount = left(b.assignedgroup, 6)
或者,更一般地说,
SELECT a.ID
from Account a
left outer join AssignedGroup b
on a.sourceaccount = left(b.assignedgroup, len(a.sourceaccount))
然而,这是真正可怕的代码,逻辑和数据库设计,我只会在使用它时进行故障排除和/或修复混乱的数据。