demo:
本人項目的使用的需求場景:
統計每日:會員,會員登入,會員註冊,會員活躍,的總數,接口返回的欄位都是total,date,module,只不過模塊不一樣使用的表和獲取數據的字段的不同;(供參考)
<select id="analytics" resultType="map">
<choose><when test="module == 'AMOUNT'"> <!-- 執行的條件-->
SELECT updatedAt,total,'AMOUNT' AS 'module' FROM table1 m
WHERE m.`updatedAt` >= DATE_SUB(CURDATE(),INTERVAL #{interval} DAY)
</when>
<when test="module == 'LOGIN'">
SELECT SUM(d.count) AS 'total','LOGIN' AS 'module' ,d.`updatedAt` FROM table2 d WHERE
d.`action`='LOGIN' and d.`updatedAt` >= DATE_SUB(CURDATE(),INTERVAL #{interval} DAY) GROUP BY DATE_FORMAT(updatedAt,'%Y%M%d')
</when>
<when test="module == 'REGISTER'">
SELECT SUM(d.count) AS 'total', 'REGISTER' AS 'module',d.`updatedAt` FROM table3 d WHERE
d.`action`='REGISTER' and d.`updatedAt` >= DATE_SUB(CURDATE(),INTERVAL #{interval} DAY) GROUP BY DATE_FORMAT(updatedAt,'%Y%M%d')
</when>
<when>...</when>...
</select>