我有一個MySQL表department_members
包含單個部門中每個人的字符串字段(member_name
)和int字段(recent_actions
)的行。對於所有行,Recent_actions
當前爲NULL。更新MySQL表與計數從子查詢如果字符串匹配,否則設置爲零
我還有另一張更大的表company_actions
,其中包含一行,每次在整個公司中有人在過去的一年中執行過這種類型的操作。每行有一個member_name, timestamp,
和一個獨特的action_id
。
我想更新department_members.recent_actions
,並計算過去兩週內該成員執行此類操作的次數。如果他們最近沒有執行任何操作,我想用012更新department_members.recent_actions
。
我試過各種CASE和IF方法,但是我無法獲得正確的語法。
僞代碼,這就是我想要做的事:
UPDATE department_members AS d,
(SELECT COUNT(action_id) AS recent, member_name
FROM company_actions
WHERE timestamp > DATE_SUB(NOW(), INTERVAL 14 DAY) AS tmp
/* then do something like this, only for real: */
IF d.member_name IN tmp(member_names) THEN d.recent_actions = tmp.recent
WHERE d.member_name = tmp.member_name
ELSE IF d.member_name NOT IN tmp(member_names) THEN d.recent_actions = 0
希望橫跨東西我要去,因爲我得到?任何幫助,將不勝感激!我一整天都在毆打這個問題。
['CASE'](http://dev.mysql.com/doc/refman/5.7/en/case.html)條款應該適合該法案。用'CASE'顯示你的查詢。 –