我有一个表ticketdetails
,其中包含一个包含数据的列,我希望将其复制到另一个表的列中:
SELECT TicketID, MIN( StartTime ) StartTime
FROM ticketdetails
GROUP BY TicketID #might be unnecessary?
ORDER BY TicketID
输出如下:
我希望此查询的结果" StartTime",在我的其他表格列tickets.TimeScheduled
中提供,其中TicketID
匹配两个表。
现在我正在尝试:
UPDATE tickets SET TimeScheduled = (
SELECT MIN( StartTime ) StartTime
FROM ticketdetails
GROUP BY TicketID
ORDER BY TicketID)
WHERE tickets.TicketID = ticketdetails.TicketID
我收到此错误:
#1054 - Unknown column 'ticketdetails.TicketID' in 'where clause'
我知道这个列存在于我的数据库中。由于某种原因,查询无法识别该列。我想我需要一个JOIN
或者其他东西,但对于中级高级MySQL查询我不是最好的。非常感谢帮助。
答案 0 :(得分:2)
使用联接:
UPDATE tickets AS t
JOIN (SELECT TicketID, MIN( StartTime ) StartTime
FROM ticketdetails
GROUP BY TicketID) AS d ON t.TicketID = d.TicketID
SET t.TimeScheduled = d.StartTime
您收到Unknown column
错误的原因是因为ticketdetails
表仅存在于子查询中,而不存在于主查询中。
如果您想timeScheduled
设置为NULL
,如果ticketdetails
中没有匹配的机票,请将JOIN
更改为LEFT JOIN
。
ORDER BY
。
答案 1 :(得分:0)
您可以使用相关子查询执行此操作:
UPDATE tickets
SET TimeScheduled = (SELECT MIN( td.StartTime ) StartTime
FROM ticketdetails td
WHERE td.TicketID = t.TicketID
);