好的,所以这个问题已经在这里被要求死了,但我还是没有找到实际的MySql语句答案。只是很多原因导致它不起作用。对于那些不熟悉SQL的人来说,我需要一个例子。这就是我所拥有的:
**Table One**
key bigint(4) UNSIGNED auto_increment
username varchar(10) utf8_general_ci
score bigint(5) UNSIGNED
password varchar(60) utf8_general_ci NULL
PRIMARY PRIMARY 15 key
username UNIQUE 15 username
**Table Two**
key bigint(4) No auto_increment
username varchar(10) utf8_general_ci No
score_old bigint(11) No
score_high bigint(11) No .
PRIMARY PRIMARY 16 key
username UNIQUE 16 username
两个表都包含数据。我想用Table One得分列填充Table Two score_high。 当我尝试
INSERT INTO Table2( score_high )
SELECT score
FROM Table1
我得到了
> > MySQL说:
&GT; #1062 - 密钥2的重复条目<'
明确的,外行,解释将不胜感激。谢谢。
答案 0 :(得分:0)
UPDATE Smuckers_Users SET score_high = (SELECT score FROM Smuckers_Info WHERE Smuckers_Users.username = Smuckers_Info.username)
答案 1 :(得分:0)
让我们从
开始INSERT INTO Table2( score_high )
SELECT score
FROM Table1
您正在将表1中的分数插入表2,仅填充score_high列
查看table2的定义。它有两个独特的键
由于PRIMARY KEY是auto_increment列,因此被排除。
用户名上的UNIQUE KEY如何妨碍?
当您在score_high列中只插入一个分数(比如100,000)时,用户名的值是多少?很可能是空白领域。一行可以使用NULL用户名进入。当您将另一个分数放入表格时尝试插入另一行时会发生什么?另一行用户名空白。具有空白用户名的两行不能在table2中共存。
回顾MySQL所说的话
1062 - 密钥2的重复条目<'
键2是用户名
上的UNIQUE KEY条目为''(空字符串)
解开了神秘(Q.E.D.)
table2
?INSERT INTO Table2( username,score_high )
SELECT username,score
FROM Table1
这应该可以正常工作,因为用户名在table1中是唯一的。 table1的行应该在没有任何事件的情况下进入table2。