是否可以使用带有IN功能的ILIKE运行查询?例如:
SELECT store_names
FROM stores
WHERE states ILIKE IN (SELECT location
FROM locations
WHERE stateID = 1)
我想通过ILIKE函数运行嵌套查询返回的结果。有没有办法做到这一点?
答案 0 :(得分:4)
你正在考虑一个角落而不是需要。可以更简单:
SELECT s.store_names, l.location
FROM stores s
JOIN (
SELECT location
FROM locations
WHERE stateid = 1
) l ON s.states ILIKE l.location
我只使用子选择来提高性能。不确定查询规划器是否足够聪明,可以使用这个更简单的查询(以及您的Postgres版本)使用相同的计划:
SELECT s.store_names, l.location
FROM stores s
JOIN locations l ON s.states ILIKE l.location
WHERE l.stateid = 1
也许您可以尝试(使用EXPLAIN ANALYZE
)并报告他们是否使用相同的计划(并执行相同的计划)?
我怀疑你确实需要为你的目的添加%
:
... ON s.states ILIKE ('%' || l.location || '%')