SQL查询:由一个联合表INSERT链接到另一个联合表的行

时间:2013-12-02 09:50:23

标签: mysql sql

我正在使用MySQL。在我的数据库中,我有以下表格:

  1. student表。此表的主键是sid

  2. high_school表。主键是hid

  3. university表。主键是uid

  4. 然后:

    • student&有一个联合表high_school,该表名为joint_table_A,它有两列:sidhid,它们链接到student&中的行。分别为high_school

    • student&的另一个联合表 university joint_table_B,名为sid,它还有两列:uidstudent,它们链接到university&中的行。分别为students

    我的问题&问题:

    我希望将sid joint_table_A hid = 3 joint_table_B uid 1 sid <{1}} joint_table_A hid=3 student的值为sid。那就是joint_table_Buid=1 joint_table_B joint_table_B引用uid=1表中与UPDATE INSERT中{{1}} {{1}} {{1}}相同的学生{{1}} {{1}} }}。这个操作的SQL查询是什么?

    ========更新==========

    (在上面的描述中,我假设{{1}}为空。但是,如果在{{1}}中已有{{1}}的记录,那么我需要{{1}}这些记录而不是{{1}}。)

1 个答案:

答案 0 :(得分:0)

试试这个:

INSERT INTO joint_table_B (sid, uid)
SELECT students.sid, 1 AS uid FROM students s, joint_table_A a WHERE s.sid=a.sid AND hid=3 

如果第二个表已有行,请使用:

INSERT INTO joint_table_B (sid, uid)
SELECT students.sid, 1 AS uid FROM students s, joint_table_A a WHERE s.sid=a.sid AND hid=3 
ON DUPLICATE KEY UPDATE uid = 1

UPDATE joint_table_B SET uid = 1
WHERE sid IN (select students.sid FROM students s, joint_table_A a WHERE s.sid=a.sid AND hid=3)