我有2张桌子。 一个是任务表 Task Table
WONumber表 WONumber table
现在我需要从wonumber表中查找wonumber并在任务表中查找taskname。 基本上加入了两个表。
我尝试了这个查询,但它不起作用
select * from task at t
join wonumber as w
on t.taskname like '%'+w.wonumber+'%'
但这会产生70000行并减慢数据库速度,我必须重新启动它。 当两个表都不相关时,应该有办法在另一个表中查找一个表值。
答案 0 :(得分:1)
这肯定是糟糕的数据库设计,但如果您确定task.taskName
以#***
结尾且wonumber.wonumber
以#
开头,那么您可以提高性能(一点点)使用
select * from task at t
join wonumber as w
on t.taskname like '%'+w.wonumber --no trailing '%'
答案 1 :(得分:0)
如果保证数据模式一致(两个表中的#后跟tasknumber)并且该模式在"任务"表,最后没有空格。
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
顺便说一句,你正在进入这些奇怪的情况,因为数据库设计不佳,Tasknumber应该在两个表中的单独列中,这将是一个简单的超快内连接查询。所以我基本上从任务表中提取tasknumber列作为一个单独的列,以便我可以使用它来连接Wonnumber表。 HTH!