0

我有这些表(编辑了不相关的字段)

mysql> desc studentcourseplan;
+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| cpl_id            | int(11)      | NO   | PRI | NULL    | auto_increment |
| student_id        | int(11)      | YES  | MUL | NULL    |                |
+-------------------+--------------+------+-----+---------+----------------+


mysql> desc studentdates;
+-----------------------+---------+------+-----+---------+----------------+
| Field                 | Type    | Null | Key | Default | Extra          |
+-----------------------+---------+------+-----+---------+----------------+
| student_date_id       | int(11) | NO   | PRI | NULL    | auto_increment |
| student_id            | int(11) | YES  |     | NULL    |                |
| student_date_cpl_id   | int(11) | YES  |     | NULL    |                |
+-----------------------+---------+------+-----+---------+----------------+

我想将该列复制studentcourseplan.cpl_idstudentdates.student_date_cpl_id使用以下查询(以排除重复项)

SELECT cpl_id FROM studentcourseplan
    WHERE student_id NOT IN ('50', '51', '85', '86', '90', '95', '89', '91', '92', '93', '94', '97', '98', '99', '100', '88')

当我执行正常操作INSERT INTO studentdates.student_date_cpl_id SELECT ......时,它会添加到新行中,并且不会更新当前行。我将如何实现这一目标?

4

2 回答 2

1
Update  studentdates s,studentcourseplan sp
SET s.student_date_cpl_id = sp.cpl_id
where s.student_id=sp.student_id            
and s.student_id not in('50', '51', '85', '86', '90', '95', '89', '91', '92', '93', '94', '97', '98', '99', '100', '88')
于 2012-09-24T08:58:46.537 回答
1

尝试这样的事情

INSERT INTO studentdates.student_date_id,
     studentdates.student_date_cpl_id
select .... (join your tables)

ON DUPLICATE KEY UPDATE studentdates.student_date_cpl_id = studentcourseplan.cpl_id
于 2012-09-24T09:00:11.777 回答