23

どうすればこれを機能させることができますか?

SELECT * 
FROM   item 
WHERE  item_name LIKE '%' 
                      || (SELECT equipment_type 
                          FROM   equipment_type 
                          GROUP  BY equipment_type) 
                      || '%' 

内側のサブクエリは、「The」「test」「another」のような文字列のリストを返し、item_name がサブクエリの戻り値に似ている項目テーブルからすべての項目を選択したいと考えています。ワイルドカードが必要です。

ワイルドカードを使用できますが、代わりに IN sql コマンドを使用する代替手段はありますか?

4

4 に答える 4

34

次を使用できますINNER JOIN

SELECT I.* 
FROM item I
INNER JOIN (SELECT equipment_type 
            FROM equipment_type 
            GROUP BY equipment_type) E
    ON I.item_name LIKE '%' || E.equipment_type || '%'
于 2013-06-18T20:03:41.617 に答える
10

重複を心配したくない場合や、どれが一致するか気にしない場合は、次の使用に切り替えexistsます。

select i.*
from item i
where exists (select 1
              from equipment_type
              where i.item_name like '%'||equipment_type||'%'
             )
于 2013-06-18T20:06:15.167 に答える
2

CONCATサブクエリを使用して挿入できます。

SELECT * FROM item WHERE  item_name LIKE  
CONCAT('%', (
    SELECT equipment_type
    FROM equipment_type
    GROUP BY equipment_type), '%'
)
于 2021-07-29T12:26:33.787 に答える