1
私は2つのテーブルにいくつかの非正規化データを持っています。私は現在の顧客の残高を得ることができるので、私は彼のすべての操作をすべて集計する必要はありませんので、私はそれをUserBalanceテーブル(以下の最初のもの)に保存しますので、非正規化されています。時間:1つのSQLクエリで非正規化データの不一致を検出しますか?
+----+----------+---------+ | ID | Username | Balance | +----+----------+---------+ | 1 | Alice | 50 | +----+----------+---------+ | 2 | Bob | 20 | +----+----------+---------+ | 3 | Charles | 30 | +----+----------+---------+
+----+------------+---------+ | ID | CustomerID | Amount | +----+------------+---------+ | 1 | 1 | 50 | +----+------------+---------+ | 2 | 2 | 80 | +----+------------+---------+ | 3 | 3 | 10 | +----+------------+---------+ | 4 | 2 | -60 | +----+------------+---------+ | 5 | 3 | 20 | +----+------------+---------+
これは、システム内の競争条件がある場合の整合性の問題が表示されます。だから、それらを検出するために、バランスの不一致を検出する毎日のDBクエリ(つまり、SUM(amount)
がbalance
と異なる場合)を取得したいと考えています。どのように1つのSQLステートメントでそのようなJOINを行うには?
は矛盾を防ぐのではなく、それを検出し、修正しようとする方が良いではありません。この
を試してみてください? –
はい、これはSQLをよく学ぶためのものですが、GROUPBY句が必要ですが、わかりません – user1623521