2016-07-21 56 views
0

我有2个表。 一个是任务表 Task TableSQL将一个表中的列值与另一列中的列值进行匹配,但不加入

WONumber表 WONumber table

现在我需要寻找wonumber从wonumber表,并期待在任务表中的任务名。 基本上加入这两个表。

我尝试此查询,但它不工作

select * from task at t 
join wonumber as w 
on t.taskname like '%'+w.wonumber+'%' 

但是这会产生像70000行和减慢了的数据库,我必须重新启动它。 当两个表都不相关时,应该有办法在另一个表中查找一个表值。

+0

尝试where子句要比较任何特定的ID,你得到的结果将会很多:来自两个表 – Manjuboyz

回答

0

如果数据模式保证一致(#在两个表中都跟随tasknumber),并且此模式在“Task”表的最后并且末尾没有空格,请尝试此操作。

Select * from 
(
Select t.*, Right(t.taskname, Patindex('%#%', t.taskname) + 1) as TaskNum 
From Task t 
) a INNER JOIN WonNumber w 
on a.TaskNum = w.wonumber 

BTW你做了,因为一个贫穷的分贝设计Tasknumber应在两个表中的列单独的这些奇怪的情况,这将是一个简单的超快速内环联接查询。所以Iam基本上将tasknumber列从任务表中提取为一个单独的列,以便我可以使用它与Wonnumber表连接。 HTH!

1

这是肯定不好的数据库设计,但如果你确信task.taskName#***wonumber.wonumber开始与#结束,那么你可以通过提高性能(少许)使用

select * from task at t 
join wonumber as w 
on t.taskname like '%'+w.wonumber --no trailing '%' 
+0

的许多映射可以帮助他一点 –

相关问题