8

我正在尝试将毕业期限表中相应的毕业日期值复制到 user_education_mba_school 表中具有匹配毕业期限的行中。这是我的非工作查询

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

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

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
4

4 回答 4

11

几个数据库支持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

如果您的数据库没有,请说明您使用的是哪个数据库。

于 2012-06-29T00:29:02.793 回答
3

这不起作用,因为您正在设置子查询的整个结果集

UPDATE user_education_mba_school SET graduation_date = (
  SELECT gt.graduation_date
  FROM user_education_mba_school mba, graduation_term gt
  WHERE gt.graduation_term_id = mba.graduation_term_id
)

这应该有效(未经测试)

UPDATE user_education_mba_school mba SET graduation_date = (
  SELECT gt.graduation_date
  FROM graduation_term gt
  WHERE gt.graduation_term_id = mba.graduation_term_id
)
于 2012-06-29T00:29:36.593 回答
0
UPDATE  mba
SET     graduation_date = gt.graduation_date, mba_graduation_year_id = gt.graduation_year_id
FROM    user_education_mba_school mba
JOIN    [sueldovista].dbo.graduation_term gt
ON      gt.graduation_term_id = mba.graduation_term_id


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    [sueldovista].dbo.graduation_term gt
ON      mba.graduation_term_id = gt.graduation_term_id
JOIN    [sueldovista].dbo.graduation_class gc
ON      gt.graduation_year_id = gc.graduation_year_id
WHERE   gc.site_instance_id = 1
于 2012-06-29T01:50:00.983 回答
0

甲骨文:

UPDATE PRODUCTION a
SET (name, count) = (
  SELECT name, count
  FROM STAGING b
  WHERE a.ID = b.ID);
于 2013-10-21T19:27:13.250 回答