Sql 在Select查询中使用Like运算符处理另一个Select查询的结果

Sql 在Select查询中使用Like运算符处理另一个Select查询的结果,sql,sql-server,sql-like,Sql,Sql Server,Sql Like,我有一个带有内部联接的查询,返回4-5行-查询: select Table1.valstring Prefix from TestDB.dbo.SomeCompany PC INNER JOIN TestDB.dbo.CMCompany CMC ON PC.companyuid = CMC.companyuid LEFT OUTER JOIN TestDB.dbo.ATRIBUTE Table1 ON Table1.Contract = CMC.contract AND Tabl

我有一个带有内部联接的查询,返回4-5行-查询:

select Table1.valstring Prefix
from TestDB.dbo.SomeCompany PC
    INNER JOIN TestDB.dbo.CMCompany CMC ON PC.companyuid = CMC.companyuid
    LEFT OUTER JOIN TestDB.dbo.ATRIBUTE Table1 ON Table1.Contract = CMC.contract AND Table1.attribute = 'SomeThing'
    LEFT OUTER JOIN TestDB.dbo.ATRIBUTE TheRealPrefix ON TheRealPrefix.Contract = CMC.contract AND TheRealPrefix.attribute = 'SomeOtherPrefix'
where secretCode = 'Mistery'
我想将这个查询输入到另一个select查询中,该查询使用like运算符和已经描述的查询的结果

比如说:

    select from taskTable where task like ('%' + select Table1.valstring Prefix
    from TestDB.dbo.SomeCompany PC
        INNER JOIN TestDB.dbo.CMCompany CMC ON PC.companyuid = CMC.companyuid
        LEFT OUTER JOIN TestDB.dbo.ATRIBUTE Table1 ON Table1.Contract = CMC.contract AND Table1.attribute = 'SomeThing'
        LEFT OUTER JOIN TestDB.dbo.ATRIBUTE TheRealPrefix ON TheRealPrefix.Contract = CMC.contract AND TheRealPrefix.attribute = 'SomeOtherPrefix'
    where secretCode = 'Mistery'
)
尝试使用此查询:

select *
from TestDB.dbo.SomeCompany PC
    INNER JOIN TestDB.dbo.CMCompany CMC ON PC.companyuid = CMC.companyuid
    LEFT JOIN TestDB.dbo.ATRIBUTE Table1 ON Table1.Contract = CMC.contract AND Table1.attribute = 'SomeThing'
    LEFT JOIN TestDB.dbo.ATRIBUTE TheRealPrefix ON TheRealPrefix.Contract = CMC.contract AND TheRealPrefix.attribute = 'SomeOtherPrefix'
    LEFT JOIN taskTable ON taskTable.task LIKE '%' + Table1.valstring
 where secretCode = 'Mistery'

但是请记住,如果数据库中有许多行,请按'%'+表1进行搜索。valstring是一种不好的做法。

如果需要匹配,则不需要
左连接。所以把它们去掉。不清楚
secretCode
来自何处;这应该是明确的

属性
上的最后一个
连接
无效--不用于筛选。而且
secretCode
不是来自该表(您将得到一个错误,因为引用不合格)

所以,我想这就是你想要的:

SELECT tt.*
FROM TestDB.dbo.SomeCompany PC JOIN
     TestDB.dbo.CMCompany CMC 
     ON PC.companyuid = CMC.companyuid JOIN
     TestDB.dbo.ATRIBUTE a
     ON a.Contract = CMC.contract AND a.attribute = 'SomeThing' JOIN
     taskTable tt
     ON task like CONCAT('%', a.valstring)
WHERE secretCode = 'Mistery'