我对SQL有疑问。有一个有3个字段的桌子。
以下是数据
数据
ID FirstName LastName
============================
1 John Chan
2 May Wong
3 Tim Leung
我想在表中插入名字和姓氏,但第一个名字和姓氏必须与表格中的现有数据不同。例如,当我进入John Lee和Tim Wong时,这是可以的,但不是Tim Leung。
我可以使用1个SQL来完成这部分吗?非常感谢你。
答案 0 :(得分:2)
假设TSql:
INSERT INTO myTable (FirstName, LastName)
SELECT @FirstName, @LastName FROM myTable
WHERE NOT EXISTS (
SELECT * FROM myTable
WHERE FirstName = @FirstName AND LastName = @LastName)
正如其他人所说,添加一个唯一约束来强制执行此规则是一个好主意。
答案 1 :(得分:0)
没有。但您可以将名字和姓氏设置为唯一约束。
您还可以在插入之前检查是否有任何具有相同名字和姓氏的行。
答案 2 :(得分: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);
答案 3 :(得分: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风格。
答案 4 :(得分:0)
是。 @bort建议没问题。但是,如果要更新现有行并在一个SQL语句中插入新行,请查看merge语句。
http://dcx.sybase.com/1100/en/dbreference_en11/merge-statement.html
答案 5 :(得分:0)
您必须为此创建INDEX
(see CREATE INDEX (Transact-SQL))
CREATE UNIQUE NONCLUSTERED INDEX uniqueName_Index
ON TableName (first_name, last_name);