簡體   English   中英

選擇列包含任何子查詢結果的行

[英]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] + '%'

您可以將JOINLIKE子句一起使用以獲取結果:

select *
from mytable t
inner join subtable s
   on t.mycolumn like '%'+s.name+'%'

參見帶有演示的SQL Fiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM