我有两个模型,一个是student_profile,我有大学字段来显示大学名称。我有一个大学列表,我需要更新另一个名为Package的表,只有当一个大学存在于表中时。表有1000
个记录,我需要用一个查询更新所有条目。
a, b, c, d
。student_profile
我的桌子:
+---------------------------+
| student_profile |
+---------------------------+
| id | int(11) |
| first_name | varchar(45) |
| last_name | varchar(45) |
| university | varchar(45) |
+---------------------------+
+---------------------------+
| package |
+---------------------------+
| student_id | int(11) |
| is_active | tinyint |
| package_type| varchar(45) |
+---------------------------+
ForeignKeys
表中的 StudentProfile
表:
name = student_package
schema = mydb
Column = student_id
reference Schema = mydb
referenced table = student_profile
referenced column= id
如果大学存在,我需要设置is_active=True
并设置package.student_id as student_profile.id
和package.package_type as
' UniverityEnrolled
'。
答案 0 :(得分:0)
根据我对该问题的理解,这可能是您的解决方案:
UPDATE package
SET is_active = 1,package_type = "UniversityEnrolled"
WHERE student_id IN
(SELECT id FROM student_profile WHERE university IN ("a","b","c","d"))
答案 1 :(得分:0)
要想出这样的结果,请从输出要更新的记录的SELECT开始。
然后当它工作时,转换为更新语句。
SELECT *
FROM `StudentProfile` a
JOIN `Package` b
ON a.`id` = b.`student_id`
WHERE `university` in ('a','b','c');
UPDATE `StudentProfile` a
SET `is_active` = 1
JOIN `Package` b
ON a.`id` = b.`student_id`
WHERE `university` in ('a','b','c');