sql使用multi join subselect更新多行

时间:2012-06-29 01:18:55

标签: sql sql-server sql-subselect

这是我之前提出的问题的第2部分。我正在尝试进行以下更新,但此查询实际上似乎没有做任何事情。

UPDATE  u
SET     graduation_class_id = gc.graduation_class_id
FROM    [user] u
JOIN    graduation_class gc
ON      u.graduation_class_id = gc.graduation_class_id
JOIN    graduation_term gt
ON      gt.graduation_year_id = gc.graduation_year_id

TABLE SCHEMA
**user
user_id
graduation_class_id

**graduation_class
graduation_class_id
graduation_year_id

**graduation_term
graduation_term_id
graduation_year_id

目标是将匹配的gradu_class_id值放入用户表中。我被告知这不起作用,因为除非用户已经匹配了gradu_class_id,否则将无法找到匹配项。这是一个问题,因为我正试图在那里找到合适的人!

1 个答案:

答案 0 :(得分:2)

这个想法从根本上注定要失败。尽管SQL服务器没有关于应该将哪个毕业班级链接到用户的信息,但您正试图让SQL服务器自己将毕业班级链接到用户。除非你在某个地方(在用户中,在gradu_class中,在其他一些表中)有一些数据将user_id链接到毕业学期,班级或年份(或者某人手动告诉SQL哪些数据匹配),SQL不能神奇地做到这一点为你工作。