我正在使用MySQL。在我的数据库中,我有以下表格:
student
表。此表的主键是sid
。
high_school
表。主键是hid
。
university
表。主键是uid
。
然后:
student
&有一个联合表。 high_school
,该表名为joint_table_A
,它有两列:sid
和hid
,它们链接到student
&中的行。分别为high_school
。
student
&的另一个联合表 university
joint_table_B
,名为sid
,它还有两列:uid
和student
,它们链接到university
&中的行。分别为students
。
我的问题&问题:
我希望将sid
joint_table_A
hid = 3
joint_table_B
uid
1
sid
<{1}} joint_table_A
hid=3
student
的值为sid
。那就是joint_table_B
中uid=1
joint_table_B
joint_table_B
引用uid=1
表中与UPDATE
INSERT
中{{1}} {{1}} {{1}}相同的学生{{1}} {{1}} }}。这个操作的SQL查询是什么?
========更新==========
(在上面的描述中,我假设{{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)