2012-01-16 129 views
0

我有這個疑問:子查詢返回多個1行

UPDATE student_info 
    set grade = (SELECT tempTable.grade 
        FROM tempTable 
        WHERE student_info.s_id = (SELECT s_id FROM tempTable)) 

我也試着在這裏建議的解決方案: http://dev.mysql.com/doc/refman/5.0/en/subquery-errors.html

+2

你究竟想要做什麼? – 2012-01-16 16:15:49

+1

這個問題是需要的! – Akrem 2012-01-16 16:17:02

+0

我有兩個表格,student_info包含3行(s_d,name,grade)。除了'等級'之外,所有東西都被填滿使用具有相同行數的tempTable表,除了它包含等級外,我想將tempTable的等級傳遞給student_info – Nath 2012-01-16 16:18:59

回答

7

我想你想:

UPDATE student_info 
    JOIN tempTable 
    ON tempTable.s_id = student_info.s_id 
SET student_info.grade = tempTable.grade 
+0

,這將完成這項工作。 – 2012-01-16 16:20:19

+0

我會嘗試。回來一分鐘。 – Nath 2012-01-16 16:20:50

+0

+1非常棒的猜測,你是通靈!在發佈之前,我剛刪除了一個錯誤的答案,因爲我誤解了這個問題...... – 2012-01-16 16:22:30

2

你子查詢返回多個行,可能是因爲JOIN不正確。嘗試:

UPDATE student_info 
    SET grade = (SELECT grade 
     FROM tempTable 
     WHERE s_id = student_info.s_id) 

當然,這是假設tempTable只包含每s_id一個記錄。如果有更多的那一個,那麼你需要按TOP 1排序某些屬性(最新?最高?)

+0

這也應該起作用。 MySQL有'LIMIT n',但沒有'TOP n'。 – 2012-01-16 16:31:15