Mysql 具有WHERE IN和MIN的子查询
我有一个数组,如:Mysql 具有WHERE IN和MIN的子查询,mysql,sql,subquery,Mysql,Sql,Subquery,我有一个数组,如: $inQuery = (1, 2, 3,...) 我想从投资组合表中得到具有最小价格值的物品。我的问题是: SELECT * FROM portfolio p WHERE p.article_id IN ($inQuery) = ( SELECT MIN(p.net_price) FROM portfolio p); AND p.state_id = (:state_id) 如何
$inQuery = (1, 2, 3,...)
我想从投资组合表中得到具有最小价格值的物品。我的问题是:
SELECT *
FROM portfolio p
WHERE p.article_id IN ($inQuery) = (
SELECT MIN(p.net_price)
FROM portfolio p);
AND p.state_id = (:state_id)
如何获得包含不同文章和最低价格的条目表单组合?如果您有关于净价的索引(我假设您有,因为在列上没有索引,那么Select MIN(p.net\u price)将扫描整个表,这不好),那么我认为您应该执行两个查询,使用索引可能会更好:
1. $minPrice= Select MIN(net_price) from portfolio;
2. SELECT *
FROM portfolio p
WHERE p.article_id IN ($inQuery) AND net_price = $minPrice
AND p.state_id = (:state_id)
如果你有覆盖指数(净价、州id、文章id),那就太好了