0

新しい行を MySQL テーブルに挿入しようとしていますが、挿入する値の 1 つがテーブルに既にある行にない場合のみです。

たとえば、私がやっている場合:

insert into `mytable` (`id`, `name`) values (10, `Fred`)

テーブル内の他の行に既にname = 'Fred'. これはどのように行うことができますか?

ありがとう!

編集

私が試したこと(正確な声明を投稿することはできませんが、ここに表現があります):

INSERT IGNORE INTO mytable (`domain`, `id`) 
VALUES ('i.imgur.com', '12gfa')
WHERE '12gfa' not in (
    select id from mytable
)

エラーがスローされます:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE '12gfa' not in ( select id from mytable)' at line 3
4

3 に答える 3

1

まず第一に、外部キーでない限り、idフィールドは である必要がありautoincrementます(ただし、質問に挿入したコードからは推測できません)。

このようにして、id各行に一意の値を確実に持たせることができます。

そうでない場合は、複製したくないすべてINSERT IGNOREのフィールドを含むテーブルの主キーを作成し、コマンドを使用する必要があります。

これは、あなたが達成しようとしていることについての良い読み物です。

于 2013-11-03T09:59:37.877 に答える
0

このようなものを使用できます

INSERT INTO someTable (someField, someOtherField)
VALUES ("someData", "someOtherData")
ON DUPLICATE KEY UPDATE someOtherField=VALUES("betterData");

これにより、新しい行が挿入されます。重複キーを持つ行が既に存在しない限り、更新されます。

于 2013-11-03T09:57:17.943 に答える