我想获得总百分比关闭,只返回匹配> + 80。然而,这并不返回任何结果不返回任何东西:选择使用HAVING子句
SELECT * FROM products WHERE Available=1 AND Merchant='Amazon' HAVING (LowestUsedPrice - LowestNewPrice)/LowestNewPrice * 100 >= ?
我使用HAVING
是否正确?
我想获得总百分比关闭,只返回匹配> + 80。然而,这并不返回任何结果不返回任何东西:选择使用HAVING子句
SELECT * FROM products WHERE Available=1 AND Merchant='Amazon' HAVING (LowestUsedPrice - LowestNewPrice)/LowestNewPrice * 100 >= ?
我使用HAVING
是否正确?
HAVING
指定为一组或SELECT语句中使用的聚合函数的搜索条件。
HAVING
在聚合阶段之后应用,如果要过滤聚合结果,则必须使用它。
您的查询是错误的。 你可以做的是只在where子句中进行调节。
SELECT *
FROM products
WHERE Available=1
AND Merchant='Amazon'
AND (LowestUsedPrice - LowestNewPrice)/LowestNewPrice * 100 >= ?
我试过了,但它不会返回任何东西。这不需要比较吗? ''(LowestUsedPrice - LowestNewPrice)/ LowestNewPrice * 100> =?' –
你对'?'的理解是什么?你必须有一些操作数在那里你想与之比较 – FallAndLearn
对不起,'?'是一个plceholder对于一个PHP PDO操作,在这种情况下,'?'是== 80 8 –
根据我的理解,您要使用having
来过滤,而您可能只使用where
条件。
关于返回结果,您的查询将产生语法错误。如果您按照以下方式使用并且没有得到任何结果,那么显然这是因为条件和数据。在这种情况下,如果你提供数据,你可能会得到一些帮助。
SELECT * FROM products
WHERE Available=1
AND Merchant='Amazon'
AND (LowestUsedPrice - LowestNewPrice)/LowestNewPrice * 100 >= ?
SELECT *, (LowestUsedPrice - LowestNewPrice)/LowestNewPrice * 100 as percentage FROM products WHERE Available=1 AND Merchant='Amazon' HAVING percentage >= ?
百分比来自这个查询? –
它在那里在选择列作为计算列 – Damith
你的主要问题是,你个公式是错误的。使用
((LowestUsedPrice - LowestNewPrice)/LowestNewPrice) * 100
或
(LowestUsedPrice - LowestNewPrice) * 100/LowestNewPrice
你使用会做这样的事情
(20 - 8)/15 * 100
12/1500 = 0.008
的方式,你需要
1200/15 = 80
此修复程序添加到其他的解决方案回答
我认为' *'和'/'具有相同的优先级。 –
你的主要问题是你的百分比公式是错误的。检查我的答案 – phobia82