Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有WHERE IN和MIN的子查询_Mysql_Sql_Subquery - Fatal编程技术网

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),那就太好了