我有一个如下所示的查询:
SELECT *
FROM dbo.document_library_file_attributes
WHERE my_file_id=
(SELECT my_file_id
FROM dbo.document_library_file_attributes
WHERE attribute_name='Directory/Key' AND attribute_value LIKE @directory+'%')
我希望子查询能够返回多个结果,这意味着my_file_id
可以等于'directoryA','directoryB',我想要所有这些的结果。我该怎么做?
答案 0 :(得分:5)
对结果集使用IN
而不是=
:
SELECT *
FROM dbo.document_library_file_attributes
WHERE my_file_id IN
(SELECT my_file_id
FROM dbo.document_library_file_attributes
WHERE attribute_name='Directory/Key' AND attribute_value LIKE @directory+'%')
有:
确定指定的值是否与子查询或列表中的任何值匹配。
答案 1 :(得分:3)
我认为JOIN
是表达您要做的事情的更好方式:
SELECT DISTINCT lfa2.*
FROM
dbo.document_library_file_attributes lfa
JOIN dbo.document_library_file_attributes lfa2
ON lfa.my_file_id = lfa2.my_file_id
WHERE
lfa.attribute_name='Directory/Key'
AND lfa.attribute_value LIKE @directory+'%'