是否可以使用带有 IN 函数的 ILIKE 运行查询?例如:
SELECT store_names
FROM stores
WHERE states ILIKE IN (SELECT location
FROM locations
WHERE stateID = 1)
我想通过 ILIKE 函数运行嵌套查询返回的结果。有没有办法做到这一点?
是否可以使用带有 IN 函数的 ILIKE 运行查询?例如:
SELECT store_names
FROM stores
WHERE states ILIKE IN (SELECT location
FROM locations
WHERE stateID = 1)
我想通过 ILIKE 函数运行嵌套查询返回的结果。有没有办法做到这一点?
您正在考虑比需要的多一个角落。可以更简单:
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 || '%')