0

テーブルにいくつかのレコードを追加する必要がありますが、特定のリンクされたテーブルに一致するレコードのみです。次の3つのテーブルがあります。

extension_prefs (extension_id, value, parameter)
extension (id, client_id)
client (id, parent_client_id)

これらは次のようにリンクします。

extension_prefs.extension_id = extension.id AND extension.client_id = client.id

extension_prefs特定の。を持つクライアントに属するすべての拡張子に対して4つのレコードを挿入する必要がありますparent_client_id。非常に単純な感じがしますが、これを実現するための構文はわかりません。

編集:はい、私はこれを台無しにしました、これらのレコードは挿入されるのではなく更新される必要があります。

どうもありがとう

ジョージ

4

1 に答える 1

0

プリファレンスごとに次のクエリを呼び出すことができ、必要なすべての拡張機能に対して保存されます。

更新:次のクエリは、設定の新しい行を挿入するか、存在する場合は既存の行を更新します。
これは、extension_prefsテーブルにextension_id列とパラメーター列に一意の制約があることを前提としています。

INSERT INTO extension_prefs (extension_id, parameter, value)
  SELECT e.id, "key", "value"
   FROM extension e
   JOIN client c ON e.client_id = c.id
   WHERE c.parent_client_id = 123
ON DUPLICATE KEY
  UPDATE value = "value"
于 2012-07-18T12:33:31.160 に答える