0

SQLについて質問があります。3 つのフィールドを持つテーブルがあります。

  • ID(アクセスによる自動採番)
  • 名 (テキスト)
  • 姓 (テキスト)

以下はデータです

データ

ID   FirstName     LastName
============================
1    John          Chan
2    May           Wong
3    Tim           Leung

名と姓をテーブルに挿入したいのですが、名と姓はテーブルの既存のデータと同じであってはなりません。たとえば、John Lee と Tim Wong を入力すると問題ありませんが、Tim Leung は入力しません。

この部分を完了するために 1 つの SQL を使用できますか? どうもありがとうございました。

4

6 に答える 6

2

TSql を仮定すると:

INSERT INTO myTable (FirstName, LastName)
SELECT @FirstName, @LastName FROM myTable
WHERE NOT EXISTS (
    SELECT * FROM myTable 
    WHERE FirstName = @FirstName AND LastName = @LastName)

他の人が示唆しているように、このルールを適用するために一意の制約を追加することは良い考えです。

于 2012-02-11T14:14:40.600 に答える
0

はい。@bortの提案は問題ありません。ただし、1 つの SQL ステートメントで既存の行を更新して新しい行を挿入する場合は、merge ステートメントを参照してください。

http://dcx.sybase.com/1100/en/dbreference_en11/merge-statement.html

于 2012-02-11T14:18:47.200 に答える
0

いいえ。ただし、一意の制約として名と姓を設定できます。

挿入前に同じ姓と名の行があるかどうかを確認することもできます。

于 2012-02-11T14:12:14.743 に答える
0

試してください: CREATE UNIQUE CLUSTERED INDEX index_name ON table_name (first_name, last_name); または: CREATE UNIQUE NONCLUSTERED INDEX index_name ON table_name (first_name, last_name);

于 2012-02-11T14:13:47.497 に答える
0
if(mysql_num_rows(mysql_query("SELECT * FROM table WHERE last_name = 'Leung' and first_name = 'Tim'"))==0) { 
 //add the names 
}else{
    echo "First name - last name exists."
}

PHP スタイル。

于 2012-02-11T14:13:48.987 に答える
0

このために を作成する必要がありますINDEX( 「CREATE INDEX (Transact-SQL)」を参照) 。

CREATE UNIQUE NONCLUSTERED INDEX uniqueName_Index 
       ON TableName (first_name, last_name);
于 2012-02-11T14:23:46.187 に答える