0
selectサブクエリで実行されている挿入クエリがあります。これは、基本的に、それが見つけて挿入する行のコピーをフォークオフする必要があります。この部分は機能しますが、ガベージコレクションはありません。私はこれをデータベースイベントで実行しているので、基準に基づいてレコードを見つけて、新しいレコードとしてフォークします。これをもう一度実行します。どのようなアイデアであれ、それが見つけた記録は、おそらく更新されるか、サイクルを止める方法になります。あなたは左を行うことができmysqlの挿入で更新を使用する
INSERT INTO charity (pid, itemname, newval)
SELECT cha.pid, cha.itemname, 'ref')
FROM charity AS cha, entry AS ent
WHERE cha.pid = ent.id
AND cha.status = 'Pending'
AND cha.type = 'CHAR'
AND ent.dates < CURDATE()
AND ent.total > (SELECT sum(price) FROM charity WHERE cha.type = 'CHAR')
私はNOT EXISTSを追加したところで試しましたが、INSERTはまだnewvalにrefカラムを挿入していますが、pidの場合は を探し、refidのnewvalを持つレコードがあればそれを挿入します。しかし、それは、CHA ASチャリティーFROM )チャリティ(PID、itemNameに、たnewval) SELECT cha.pid、cha.itemname、 'REF' へ(EXISTSはありませんが、WHEREチャリティーFROMたnewval SELECT ENT ASエントリを INSERTを間違っていましたたnewval = 'REF') AND cha.pid = ent.id AND cha.status = '保留' AND cha.type = 'CHAR' AND ent.dates(SELECT –
hermes
私はあなたのサブクエリが十分に明白だとは思わない - それは他のフィールドに関係なくnewval = 'ref'のどこでもレコードを出力する。 – RichGoldMD