0

次の SQL ステートメントで作成されたテーブルがあります。

CREATE TABLE employees (
    id  INTEGER  NOT NULL AUTO_INCREMENT,
    name   VARCHAR(20),
    PRIMARY KEY (id)
);

次のようなものを使用してテーブルに挿入したい

INSERT IGNORE INTO employees (name) values ('foo');

ただし、テーブルに「foo」という名前の人がすでに存在する場合、そのステートメントは何もしません。主キー以外のフィールドまたは一意として定義されたフィールドの重複を無視するステートメントはありますか?

4

1 に答える 1

1
INSERT INTO employees (name)
SELECT "foo" name FROM (select count(*) c
                        from employees
                        where name = "foo"
                        having c = 0) x;

name効率を高めるために、インデックスを付ける必要があります。一意のインデックスにしたくない理由がわかりません。

フィドル

于 2013-02-27T20:28:39.960 に答える