我有两个表,tickets
和ticket_updates
ticket_updates
中有多行,tickets
中的每一行
如何在ticket_updates
中按datetime
tickets
排序
我想从最早的datetime
(DESC) 开始按datetime
订购 ticket_updates
我认为以下内容可能有效,但是在 PHPMyAdmin 中运行需要很长时间,并且出现内部服务器错误:
SELECT t.ticketnumber, t.subject, t.contact_name FROM tickets t JOIN ticket_updates tu on t.ticketnumber = tu.ticketnumber group by tu.ticketnumber order by tu.datetime DESC
你可以做这样的事情:
select t.*
from tickets t
order by (select min(datetime) from ticket_updates tu where tu.ticketid = t.ticketid);
编辑:
您也可以尝试使用group by
:
select t.*
from tickets t join
(select ticketid, min(datetime) as mindt
from ticket_updates tu
group by ticketid
) tu
on tu.ticketid = t.ticketid
group by tu.mindt desc;
或者,原始查询可以利用 ticket_updates(ticketid, datetime)
上的索引。
我想你会想要这样的东西,这几乎就是你在编辑后发布的内容。如果它运行得太慢,您可能需要为查询运行 EXPLAIN 并添加适当的索引。要么是日期时间,要么是戈登建议的票号/日期时间的复合键。
SELECT t.ticketnumber, t.subject, t.contact_name FROM ticket_updates tu
INNER JOIN tickets t ON t.ticketnumber = tu.ticketnumber
GROUP BY tu.ticketnumber
ORDER BY tu.datetime DESC
或
SELECT t.ticketnumber, t.subject, t.contact_name FROM ticket_updates tu
INNER JOIN tickets t using(ticketnumber)
GROUP BY tu.ticketnumber
ORDER BY tu.datetime DESC