1

基本的に、テーブル t1の列 ( cls、 ) に2 つの値 ('Val'、1) を挿入したいと考えています。jgは一意に設定されていclsますが、jg は同じ値で複数回出現する必要があるため、INSERT IGNORE は機能しません。したがって、ペア ('Val', 1) が既に存在するかどうかを確認する必要があり、存在しない場合はこれらの値を挿入する必要があります。

私はこのようにしてみました:

INSERT INTO t1 (`cls`,`jg`)
SELECT 'Val',1 FROM cls WHERE NOT EXISTS(
    SELECT 1 FROM cls WHERE `cls`='Val' AND `jg`=1)
LIMIT 1;

ただし、テーブルが空の場合は機能しません。これは、外側の select ステートメントにエントリが含まれていないためです…</p>

どのように進めればよいですか?これを別の方法で処理する方法がわかりません…</p>

4

2 に答える 2

0

cls、jg で一意の複合インデックスを使用します。

ALTER IGNORE TABLE t1 ADD UNIQUE  INDEX(cls(200), jg)

次に使用します

INSERT.. ON DUPLICATE KEY UPDATE
于 2013-11-09T17:03:41.077 に答える
0

あなたは間違っています。一意の制約 (主キーなど) がclsある場合、それは の値に干渉しませんjg

SQLフィドル

于 2013-11-09T17:03:53.767 に答える