[英]Get the difference of values between two mysql selects
我有兩個可用的 MySQL 查詢:
SELECT MAX(value) as value FROM data WHERE value_id = '123' AND DATE(time) = subdate(CURDATE(), 1)
第二個查詢:
SELECT MAX(value) as value FROM data WHERE value_id = '123' AND DATE(time) = subdate(CURDATE(), 2)
兩個查詢幾乎相同。 他們給了我前一天 (2017-10-24) 的最高值和前一天 - 前一天 (2017-10-23) 的最高值。
現在我現在,mysql 沒有實現減號功能。 但我必須計算差異。 我對 NOT IN 功能感到不滿,但我無法正確使用此功能...
謝謝你的幫助!
您可以在單個查詢中使用CASE
語句來獲取最大值,然后在外部查詢中進行減法
SELECT value1 - value2 as diff
FROM (
SELECT
MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 1) THEN value ELSE 0 END) as value1,
MAX(CASE WHEN DATE(time) = subdate(CURDATE(), 2) THEN value ELSE 0 END) as value2
FROM data
WHERE value_id = '123'
) a
如果你不知道哪個值會更大,上面可以產生一個負值的結果,也可以處理這個問題,在外部查詢中添加 CASE
SELECT CASE WHEN value1 >= value2
THEN value1 - value2
ELSE value2 - value1
END as diff
FROM (....) a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.