我目前正在尝试使用php脚本从my(mysql)数据库导出一些数据,虽然我也在phpmyadmin的sql部分直接尝试了sql语句,结果相同。
我想要做的是从我的数据库中导出每个独特的产品,以及最便宜的总价格,其中有库存且价格(成本)大于0,即数量> 0和价格> 0
所以,我认为我已经找到了一些帮助,它似乎与一个小数据集一起使用,但此刻此表中有大约500,000行,它会增长。
所以我的陈述是:
SELECT
products.name,
products.price,
products.quantity,
products.totalprice
FROM
products INNER JOIN
(SELECT name, MIN(totalprice) min_price
FROM products
WHERE quantity>0 AND price>0
GROUP BY name) m
ON products.name=m.name AND products.totalprice=min_price
在phpmyadmin中,它只是提出“加载”状态,正如您所期望的那样,但实际上从未给我任何值。然后我必须“停止”mysql和apache(我正在使用xampp)然后重新启动它们,否则我无法在数据库中做任何事情。
如果有人能够看到声明的错误,那么听到任何建议都会很棒。
修改
我已经尝试过简单的sql语句,但他们似乎没有给我正确的答案。例如,我已经尝试过:
SELECT name, MIN(totalprice) min_price, quantity
FROM products
WHERE quantity>0 AND totalprice>0
GROUP BY name
但正如你将从我的sql fiddle http://sqlfiddle.com/#!2/dd9f4/7/0
中看到的那样这给了我不正确的值,也就是说它给了我最便宜的价格,数量大于0,但是数量的回报,列表中第一个数量大于0的值,因此为什么我不得不加入产品的产品 感谢
答案 0 :(得分:0)
我认为此查询会返回您想要的内容(使用子查询而不是连接)。这个小提琴很快。这会在你的数据库中执行得足够快吗?如果它很大,你仍然可能需要索引。
select name, totalprice, quantity
from products P
where totalprice > 0
and totalprice =
(select min(totalprice)
from products where name = P.name
and quantity > 0)