1

データベース関連の業務に従事していただきます。ほとんどの場合、クライアントがデータを Excel シートの形式で送信し、Excel 操作後にそのデータをデータベース テーブルにプッシュするときに行われます。私も何度もやりました。

このアプローチで直面する非常に一般的な問題は、送信されるデータのほとんどが人事や財務などの部門からのものであり、人々がデータの正規化手法を十分に認識していないため、重複行が発生する可能性があることです [:-)]。

列名が id、name、department、email である Employee テーブルを使用します。

以下は、テスト データを生成するための SQL スクリプトです。

スキーマ TestDB を作成します。

CREATE TABLE EMPLOYEE
(

   ID INT,
   NAME Varchar(100),
   DEPARTMENT INT,
   EMAIL Varchar(100)
);

INSERT INTO EMPLOYEE VALUES (1,'Anish',101,'anish@howtodoinjava.com');

INSERT INTO EMPLOYEE VALUES (2,'Lokesh',102,'lokesh@howtodoinjava.com');

INSERT INTO EMPLOYEE VALUES (3,'Rakesh',103,'rakesh@howtodoinjava.com');

INSERT INTO EMPLOYEE VALUES (4,'Yogesh',104,'yogesh@howtodoinjava.com');

-- これらは重複する行です

INSERT INTO EMPLOYEE VALUES (5,'Anish',101,'anish@howtodoinjava.com');
INSERT INTO EMPLOYEE VALUES (6,'Lokesh',102,'lokesh@howtodoinjava.com');

解決:

DELETE e1 FROM EMPLOYEE e1, EMPLOYEE e2 WHERE e1.name = e2.name AND e1.id > e2.id;
4

3 に答える 3

0

フィルターを使用してExcelシート自体の重複レコードをすべて削除し、それらのレコードをurデータベースに挿入します

ユニークにはdistinctキーワードを使用

テーブル A からテーブル B に個別のレコードを挿入する方法 (両方のテーブルの構造は同じです) このスタック オーバーフロー リンクを確認してください

于 2013-03-07T09:12:01.933 に答える
0

名前フィールドに一意の制約を追加し、クエリの下で使用します INSERT INTO EMPLOYEE VALUES 「INSERT IGNORE」と「INSERT ... ON DUPLICATE KEY UPDATE」を参照してください

于 2013-03-07T09:15:38.170 に答える
0

データベースに挿入する前に、そのレコードが既に存在するかどうかを常に確認できます。この場合、従業員ごとに異なる一意のキーを条件にすることができます。さらに、一意のキーとして単一の列を使用することも、複数の列を使用してレコードを一意に識別する複合キーを使用することもできます。

于 2013-03-07T10:30:08.050 に答える