トリガーに次のものがあり、NULLが返されたときにゼロを挿入したい。ここ 2 日間、Stackoverflow やその他のサイトでさまざまな投稿を読みましたが、自分が望むものを達成できませんでした...そして、それが可能ではないのではないかと心配しています...? このクエリは、MCVMoodle.mdl_facetoface_signups.userid から、グレードのカウント値 (WHERE 条件を満たす) のすべてのユーザーを返します。カウント値は 1 以上ですが、0/null の場合は何もありません。結果なし/nullで作業することの難しさは理解していますが、カウントが0/nullのときにゼロを挿入する方法はありますか?
INSERT INTO MCVMoodle.mdl_user_info_data_f2fskipcount (userid, fieldid, datab)
SELECT MCVMoodle.mdl_facetoface_signups.userid as 'userid', 4 as 'fieldid',
COUNT(MCVMoodle.mdl_facetoface_signups_status.grade) as 'datab'
FROM
MCVMoodle.mdl_facetoface_signups
LEFT JOIN
MCVMoodle.mdl_facetoface_signups_status on MCVMoodle.mdl_facetoface_signups.id = MCVMoodle.mdl_facetoface_signups_status.signupid
WHERE
MCVMoodle.mdl_facetoface_signups_status.statuscode = 80
AND MCVMoodle.mdl_facetoface_signups_status.superceded = 0
AND MCVMoodle.mdl_facetoface_signups_status.grade = 0
GROUP BY
MCVMoodle.mdl_facetoface_signups.userid;
以下は、最終的に私のために働いたクエリです。これについて重要な助けをしてくれたゴードンに感謝します。
INSERT INTO MCVMoodle.mdl_user_info_data_f2fskipcount (userid, fieldid, datab)
SELECT MCVMoodle.mdl_facetoface_signups.userid as 'userid', 4 as 'fieldid',
COUNT(MCVMoodle.mdl_facetoface_signups_status.grade) as 'datab'
FROM MCVMoodle.mdl_facetoface_signups LEFT JOIN
MCVMoodle.mdl_facetoface_signups_status
on MCVMoodle.mdl_facetoface_signups.id = MCVMoodle.mdl_facetoface_signups_status.signupid and
MCVMoodle.mdl_facetoface_signups_status.statuscode = 80 AND
MCVMoodle.mdl_facetoface_signups_status.superceded = 0 AND
MCVMoodle.mdl_facetoface_signups_status.grade = 0
GROUP BY MCVMoodle.mdl_facetoface_signups.userid
ON DUPLICATE KEY UPDATE
datab=VALUES(datab);