我怎样才能做到这一点?
SELECT *
FROM item
WHERE item_name LIKE '%'
|| (SELECT equipment_type
FROM equipment_type
GROUP BY equipment_type)
|| '%'
内部子查询返回一个字符串列表,如'''test''aal',我想从item表中选择item_name与子查询返回值类似的所有项。我需要有外卡。
是否可以使用通配符但是使用IN sql命令?
答案 0 :(得分:16)
您可以使用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 || '%'
答案 1 :(得分:6)
如果您不想担心重复,并且不关心哪一个匹配,请切换到使用exists
:
select i.*
from item i
where exists (select 1
from equipment_type
where i.item_name like '%'||equipment_type||'%'
)
答案 2 :(得分:2)
对于上面的MSSql Server无法运行
使用
select *
from item I
where exists (select 1
from equipment_type
where i.item_name like (SELECT CONCAT('%',equipment_type,'%'))
)
答案 3 :(得分:1)
您可以使用 CONCAT
并插入子查询:
SELECT * FROM item WHERE item_name LIKE
CONCAT('%', (
SELECT equipment_type
FROM equipment_type
GROUP BY equipment_type), '%'
)