2012-08-06 58 views
-1

我試圖從特定行的數據更新幾行幾行
這是一個表,ItemNum是唯一
我嘗試:
SQL - 更新基於特定行

UPDATE myTable t, (SELECT DISTINCT width, repeat 
      FROM myTable 
      WHERE ItemNum='80644') t1 
SET t.width = t1.width 
AND SET t.repeat = t1.repeat 
WHERE ItemNum='80645' 
AND WHERE ItemNum='80646' 

給我一個錯誤
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM myTable WHERE ItemNum='80644') t1 SET t.width' at line 2


當我運行本作的單排它的工作原理
但多行的語法似乎是問題

UPDATE myTable t, (SELECT DISTINCT width 
    FROM myTable 
    WHERE ItemNum='80644') t1 
SET t.width = t1.width 
WHERE ItemNum='80645' 
+0

這有很多問題。你有沒有在這裏查找正確的語法:http://dev.mysql.com/doc/refman/5.0/en/update.html UPDATE table SET t.width = t1.width,t.repeat = t1.repeat WHERE t.ItemNum =#AND t.ItemNum =#; – Shawn 2012-08-06 18:48:46

+0

你怎麼加入你的表?你可以顯示一些你的mysql模式? – Shawn 2012-08-06 18:52:25

+0

爲什麼投票? – 2013-06-01 00:42:12

回答

0

應該可行,但如果有一個以上的行與itemnum = 80644

UPDATE myTable t 
join 
    (SELECT DISTINCT width, repeat 
      FROM myTable 
      WHERE ItemNum='80644') t1 
    on t.ItemNum in ('80645','80646') 
SET 
    t.width = t1.width, 
    t.repeat = t1.repeat 
+0

對。他在這裏需要一個連接子句。 – Shawn 2012-08-06 18:54:03

+0

對不起,加入加入。自從MySQL以來有點過時了。希望工程 – 2012-08-06 18:57:19

+0

仍然收到錯誤'#1064 - 您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'from myTable t join(選擇DISTINCT寬度,在第5行重複FROM')附近使用正確的語法。\t' – 2012-08-06 18:59:02

-1
UPDATE t 
SET t.width = t1.width 
AND SET t.repeat = t1.repeat 
FROM myTable t INNER JOIN (SELECT DISTINCT width, repeat 
      FROM myTable 
      WHERE ItemNum='80644') t1 
ON ItemNum in ('80645' 

它不會給可靠的結果, '80646')

update語句只能有一個表名 它具有表更新

可以在連接中指定支持表以便於更新語句

+1

我不認爲這是正確的MySQL語法。 – Shawn 2012-08-06 18:55:02