我想運行一個查詢,如下圖所示:PHP MySQL的選擇SUM減去SUM
SELECT (SUM(amount) - SUM(refundAmount)) as amount FROM orders WHERE $invoiceFilter AND $websiteFilter
它得到正確的金額列的總和,但它不是減去退款金額。
像這樣的查詢的正確語法是什麼?
我想運行一個查詢,如下圖所示:PHP MySQL的選擇SUM減去SUM
SELECT (SUM(amount) - SUM(refundAmount)) as amount FROM orders WHERE $invoiceFilter AND $websiteFilter
它得到正確的金額列的總和,但它不是減去退款金額。
像這樣的查詢的正確語法是什麼?
試試這個:
SELECT SUM(amount - refundAmount) AS `amount`
FROM orders
WHERE
invoice = $invoiceFilter
AND website = $websiteFilter;
您可能會丟失類似於參考列的內容來過濾需要處理的數據。喜歡的東西:
SELECT (SUM(amount) - SUM(refundAmount)) AS amount
FROM orders
WHERE
<a_column> = $invoiceFilter
AND <another_column> = $websiteFilter;
您可以在FROM
子句中使用子查詢。
SQL:
SELECT amount - refund
FROM (SELECT SUM(amount) as amount
FROM orders
WHERE invoice = 'invoiceFilter' AND website = 'websiteFilter') as a,
(SELECT SUM(refundAmount) as refund
FROM orders
WHERE invoice = 'invoiceFilter' AND website = 'websiteFilter') as b;
PHP:
mysql_query("SELECT amount - refund
FROM (SELECT SUM(amount) as amount
FROM orders
WHERE invoice = '" . mysql_real_escape_string($invoiceFilter). "'
AND website = '" . mysql_real_escape_string($websiteFilter). "') as a,
(SELECT SUM(refundAmount) as refund
FROM orders
WHERE invoice = '" . mysql_real_escape_string($invoiceFilter). "'
AND website = '" . mysql_real_escape_string($websiteFilter). "') as b; ");
這應該是正確的,提供了一些樣品的數據和預期的結果將是有幫助的。 – Blank