查询加入条件

时间:2010-12-20 17:04:37

标签: sql tsql

我有两个名为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,即使它具有这样的值。我的意思是如果列值的某些部分匹配,那么我也希望显示这些值

3 个答案:

答案 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))

然而,这是真正可怕的代码,逻辑和数据库设计,我只会在使用它时进行故障排除和/或修复混乱的数据。