Mysql
從同一個 Mysql 表中的 2 個不同日期中減去同一列中的值
我有一個 MySql 表,如:
Item Date Likes Book 2012-05-20 402 Book 2012-05-21 432 Book 2012-05-22 450 Pen 2012-05-20 20 Pen 2012-05-21 20 Pen 2012-05-22 25
- 計算和返回
Likes
所有值的 2 個設置日期之間的列差異的最簡單查詢是什麼Item
,按差異排序?例如:
Likes
2012-05-20 和 2012-05-21 之間的差異返回下一個結果:Item Difference Book 30 Pen 0
Likes
2012-05-20 和 2012-05-22 之間的差異返回下一個結果:Item Difference Book 48 Pen 5
2)還有一些情況下,
Item
表中的某些日期沒有記錄,在這些情況下不Item
應該返回結果。
- 優化查詢速度的正確索引應該是什麼?
我確實遇到過這個可能有效的查詢,但它是一個巨大的查詢,我相信可以有一個更緊湊和優雅的解決方案:)
SELECT t1.item, t2.likes - t1.likes difference FROM table t1, table t2 WHERE t1.item = t2.item AND t1.date = @first_date AND t2.date = @second_date
如果您需要所有項目(@first_date 或 @second_date 上的數據不存在),請從笛卡爾重寫為 FULL JOIN 並使用 COALESCE 將 NULL 替換為零。