グループに現在のトランザクションを配置する1つのSQL構文を書きたいと思います。この取引は、最後の60秒以内に行われなければならなかった。 現在のトランザクションを他の既存のトランザクションとグループ化するには、直前に実行された他のトランザクションからコピーされたグループID番号(GRID)を割り当てます。サブクエリ条件付きでmysqlデータベースを更新する
購入したSQLスクリプトは、直前に完了した他の購入を探して見つけた場合、見つかった行からグループ番号を取得して現在の購入に割り当てます。この場合、購入ごとに1分以内に行われると、グループで自分自身を見つけるでしょう。
これは、しかし、これは常に存在する行が1が更新されることになっている、またはした他の行のみの場合でも、更新された行の数を返しI以下の更新ステートメントが
UPDATE TRANSACTIONS
SET GRID=(SELECT G FROM
(SELECT GRID AS G
FROM TRANSACTIONS
WHERE CUST_ID='123ID'
AND STAMP+60>UNIX_TIMESTAMP()
LIMIT 1)
AS t),
STAMP=UNIX_TIMESTAMP()
WHERE CUST_ID='123ID'
AND STAMP+60>UNIX_TIMESTAMP();
を構成しているあります見つかったグループ番号はまだ割り当てられていません。これはサブクエリで見つかった値で更新されるので明らかです。何も見つからない場合、空の値で更新されます。 私が興味を持って2つの解決策があります。
- 私は(サブクエリから)見つかった場合は、このスクリプトは、値は基本的に空である(条件によって)アップデートの実行を停止します。 または
- サブクエリが空の値を返した場合、代わりに文字の修正文字列が挿入されるという条件を挿入します。