SQL与子查询一样

jor*_*dan 13 sql wildcard subquery

我怎样才能做到这一点?

SELECT * 
FROM   item 
WHERE  item_name LIKE '%' 
                      || (SELECT equipment_type 
                          FROM   equipment_type 
                          GROUP  BY equipment_type) 
                      || '%' 
Run Code Online (Sandbox Code Playgroud)

内部子查询返回一个字符串列表,如'''test''aother',我想从item表中选择item_name与子查询返回值类似的所有项.我需要外卡.

有替代方法,我可以使用通配符,但使用IN sql命令?

Lam*_*mak 18

你可以使用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 || '%'
Run Code Online (Sandbox Code Playgroud)

  • 对于那些使用 SQL Server 的人......双管似乎是 ANSI-SQL 标准,但在 T-SQL 中不起作用。/sf/ask/1636078531/ (3认同)
  • 请注意,此解决方案会产生重复项。 (3认同)

Gor*_*off 7

如果您不想担心重复并且不关心哪一个匹配,那么切换到使用exists:

select i.*
from item i
where exists (select 1
              from equipment_type
              where i.item_name like '%'||equipment_type||'%'
             )
Run Code Online (Sandbox Code Playgroud)