我有这两张表:
desc students
+-----------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------+------+-----+---------+----------------+
| student_id | int(11) | NO | PRI | NULL | auto_increment |
| student_ticket_number | int(11) | YES | | 0 | |
+-----------------------+---------+------+-----+---------+----------------+
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_ticket_number | int(11) | YES | | 0 | |
+-----------------------+---------+------+-----+---------+----------------+
我想将 students.student_ticket_number
列 move 到 studentdates.student_ticket_number
字段 student_id
匹配的地方。
因此,如果用户 John 的 student_id
= 1,则将他的票号(例如 1234)从 students.student_ticket_number
move 到 studentdates.student_ticket_number WHERE student_id = '1 '
.
在表 studentdates.student_id
中可以有多个相同的记录,那么我想使用最低的 studentdates.student_date_id
并跳过其他记录。如果不清楚,请告诉我。
我想我需要以某种方式进行子查询,但是怎么做呢?
最佳答案
您需要获得最小值 student_date_ID
在子查询中,然后将其与其他表连接起来。试试这个,
<罢工>罢工>
<罢工>UPDATE students a
INNER JOIN studentdates b
ON a.student_ID = b.student_ID
INNER JOIN
(
SELECT student_ID, MIN(student_date_ID) minID
FROM studentDates
GROUP BY student_ID
) c ON b.student_ID = c.student_ID AND
b.student_date_id = c.minID
SET a.student_ticket_number = b.student_ticket_number
WHERE a.student_id = '1'
罢工><罢工>罢工>
UPDATE students a
INNER JOIN studentdates b
ON a.student_ID = b.student_ID
INNER JOIN
(
SELECT student_ID, MIN(student_date_ID) minID
FROM studentDates
GROUP BY student_ID
) c ON b.student_ID = c.student_ID AND
b.student_date_id = c.minID
SET b.student_ticket_number = a.student_ticket_number
WHERE a.student_id = '1'
关于mysql - 合并 MySQL 列排除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12596098/