2012-02-11 78 views
0

我有一個關於SQL的問題。有一個有3個字段的桌子。SQL插入所有字段的條件

  • ID(通過訪問自動編號)
  • 名(文本)
  • 姓(文本)

以下是數據

數據

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

我想插入名字和la st表名,但名字和姓氏不能與表中現有數據相同。例如,當我進入John Lee和Tim Wong,而不是Tim Leung時,這是可以的。

我可以用1個SQL完成這部分嗎?非常感謝你。

回答

0

不,但您可以將名字和姓氏設置爲唯一約束。

您還可以在插入前檢查是否有任何具有相同名字和姓氏的行。

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);

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 style。

2

假設TSQL:

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

正如其他建議,加入了獨特的約束來此規則是一個好主意。

0

你必須創建這個(see CREATE INDEX (Transact-SQL)

CREATE UNIQUE NONCLUSTERED INDEX uniqueName_Index 
     ON TableName (first_name, last_name); 
+0

@DicksonLee將這個解決方案工作的INDEX? – 2012-02-11 14:25:10