繁体   English   中英

从两个表中选择,从第二个表中按一行排序

[英]select from two tables ordering by one row from second table

我有两个表, ticketsticket_updates

有在多行ticket_updates在每一个行tickets

如何在ticket_updatesdatetime时间从订购ticketsticket_updates

我想从最早的datetime (DESC)在ticket_updatesdatetime时间进行订购

我以为以下方法可能有效,但是在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM