[英]Select Rows Where A Column Contains Any Result From A SubQuery
如果有一個表包含使用定界符(即11111_22222_33333)連接的數據的列(我知道這是不好的做法,但這是我必須使用的數據)
我需要編寫一個查詢,該查詢返回包含特定值22222的所有行,其中特定值是子查詢的結果。
所以,我正在做的是...
SELECT * FROM myTable WHERE myColumn IN (SELECT [Name] FROM subTable)
這可以運行,但不會返回任何結果,因為它專門將1111_2222_3333匹配為2222。所以我需要的是一種使用LIKE或類似方法的方法
SELECT * FROM myTable WHERE myColumn LIKE (SELECT [NAME] FROM subTable)
給出錯誤
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows
=, !=, <, <= , >, >= or when the subquery is used as an expression.
請問這將如何完成? 我正在使用Sql Server 2008 R2進行開發,但該解決方案還需要與Server 2005兼容
您的子查詢返回了多個值,LIKE無法與子查詢一起使用,您需要在這里使用EXISTS嘗試此操作
SELECT * FROM myTable a
WHERE EXISTS (SELECT 1 FROM subTable b
WHERE a.myColumn LIKE '%' + b.[NAME] + '%')
SELECT
t1.*
FROM myTable t1
join (
SELECT distinct [Name] FROM subTable
) x
on t1.myColumn like '%' + x.[name] + '%'
您可以將JOIN
與LIKE
子句一起使用以獲取結果:
select *
from mytable t
inner join subtable s
on t.mycolumn like '%'+s.name+'%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.