sql使用subselect更新多行

Ada*_*itt 6 sql subquery sql-update

我试图将gradu_term表中相应的gradu_date值复制到user_education_mba_school表中具有匹配的gradu_term_id的行中.这是我的非工作查询

TABLE DEFS
**user_education_mba_school
  school_id
  graduation_date
  graduation_term_id

**graduation_term
  graduation_term_id
  graduation_year_id
  graduation_date

**graduation_class
  graduation_class_id
  graduation_year_id  

**user
  user_id
  graduation_class_id
Run Code Online (Sandbox Code Playgroud)

- 多连接不起作用......

UPDATE  u
SET     graduation_class_id = gc.graduation_class_id
FROM    [user] u
JOIN    user_education_mba_school mba
ON      mba.user_id = u.user_id
JOIN    graduation_term gt
ON      mba.graduation_term_id = gt.graduation_term_id
JOIN    graduation_class gc
ON      gt.graduation_year_id = gc.graduation_year_id
Run Code Online (Sandbox Code Playgroud)

And*_*mar 8

有几个数据库支持update ... from语法,这很清楚:

UPDATE  mba
SET     graduation_date = gt.graduation_date
FROM    user_education_mba_school mba
JOIN    graduation_term gt
ON      gt.graduation_term_id = mba.graduation_term_id
Run Code Online (Sandbox Code Playgroud)

如果您的数据库没有,请说明您正在使用的数据库.

  • 在第二个查询中,如果用户已经拥有`u.graduation_class_id = gc.graduation_class_id`,则`join`只会成功.我不希望查询做多少?我建议问一个新问题,可能是[SQL Fiddle](http://sqlfiddle.com/)示例. (2认同)