我想獲得總百分比關閉,只返回匹配> + 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