2013-03-01 53 views
0

好吧,所以這個問題已經被要求在這裏死亡,但我還沒有找到實際的MySql語句的答案。只是很多原因,它不起作用。對於那些對SQL來說並不是很有用的人,我需要一個例子。這是我的:插入信息表(column_Name)從表2中選擇column_name#1062 - 鍵2的重複項''

**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表示:

>#1062 - 重複錄入 '' 的關鍵2

一清楚,外行,解釋將不勝感激。謝謝。

+0

請不要用[tag:sql-server]標記MySQL問題。 – 2013-03-01 18:06:40

+0

@AaronBertrand對不起,謝謝指出, – 2013-03-01 18:07:03

+1

沒問題。祝你的問題好運。對不起,我忍不住;我只能拼寫MySQL。 – 2013-03-01 18:07:36

回答

0
UPDATE Smuckers_Users SET score_high = (SELECT score FROM Smuckers_Info WHERE Smuckers_Users.username = Smuckers_Info.username) 
0

讓我們

INSERT INTO Table2(score_high) 
SELECT score 
FROM Table1 

您從表1將比分變爲表2開始,填充只有score_high列

問:什麼獨特的列的方式獲得?

看看table2的定義。它有兩個獨特的鍵

  • PRIMARY KEY
  • 用戶名

由於主鍵是一個AUTO_INCREMENT列,即排除。

用戶名的唯一密鑰是如何得到的?

當您在score_high列中插入一個分數(比如100,000)時,用戶名的值是多少?最有可能是一個空白字段。一行可以用NULL用戶名進入。當您將另一個樂譜放入表中時,如果您嘗試插入另一行,會發生什麼情況?另一行使用空白的用戶名。有兩個空白用戶名的行不能共存於table2中。

回首什麼MySQL表示

1062 - 重複錄入 '' 的關鍵2

鍵2是用戶名的唯一鍵

項是 ''(一個空字符串)

懸疑解決(Q.E.D.

問題:如何填充table2

INSERT INTO Table2(username,score_high) 
SELECT username,score 
FROM Table1 

這應該工作得很好,因爲用戶名在table1中是唯一的。來自table1的行應該沒有任何事件進入table2。