sql UPDATE 用法??

edited 十月 2013 in 資料庫
DBMS MySQL Database Version 4.0.16
phpMyAdmin Database Manager Version 2.5.4


SELECT avg(grade)
FROM JoinClass j1
JOIN calculate c1 ON j1.stu_id = c1.stu_id
WHERE course_id
LIKE "%l" OR course_id
LIKE "%a" OR course_id
LIKE "%n" OR course_id
LIKE "%p" AND j1.stu_id =93101163

上面這段可以查詢
可是我想套用上面的查詢結果 放在新的資料表calculate 的liberal_grade欄位名稱上
calculate 資料表 上 只有 stu_id 這個欄位而已.. 並沒有 course_id 跟 grade 這兩個欄位
我用
UPDATE calculate SET liberal_grade= avg(grade)
FROM JoinClass j1
JOIN calculate c1 ON j1.stu_id = c1.stu_id
WHERE course_id
LIKE "%l" OR course_id
LIKE "%a" OR course_id
LIKE "%n" OR course_id
LIKE "%p" AND j1.stu_id =93101163

卻出現
#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 '( grade )
FROM JoinClass j1 JOIN calculate c1 ON j1.

可是我用簡易的計算就可以
例如 UPDATE calculate SET M1=(M2+M3)/2 where stu_id=93101163
用到資料表 FROM 就不太行.. 麻煩大大解惑.. 比較少用到UPDATE...

後來又看到
http://dev.mysql.com/doc/refman/5.1/en/update.html
Currently, you cannot update a table and select from the same table
in a subquery.

UPDATE 時所更新的表格不能與 JOIN 所用到的表格重疊。
@?

@?..

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=3164

評論

  • edited 一月 2008
    一定要全都透過資料庫執行嗎?如果是,也許可以考慮將查詢的結果存到一個暫時的資料表。如果是透過 PHP 或額外的程式進行,應該可以輕易的快取第一次查詢結果,藉此在第二次查詢更新資料。
Sign In or Register to comment.