2

次のようなクエリがあります。

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」に等しい可能性があり、これらすべての結果が必要です。どうすればいいですか?

4

2 に答える 2

7

結果セット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+'%')

これ:

指定された値がサブクエリまたはリスト内のいずれかの値と一致するかどうかを判断します。

于 2013-02-04T19:13:18.400 に答える
3

JOINaは、あなたがやろうとしていることを表現するためのより良い方法だと思います:

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+'%'
于 2013-02-04T19:15:56.550 に答える