mysql—按时间顺序对连接中的数据进行排序,以获取最新的条目

8e2ybdfx  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(365)

我有3个数据库表:
openroheader公司
openrodata公司
奥普罗诺特斯
标题和数据每小时更新(覆盖)一次,同时手动添加注解,并通过字段“ro\ U编号”链接
我想让sql检索最新的“注解”(按“date\u updated”)

SELECT file_date, rod.id as id, key_id, key_name, key_value, DATE_FORMAT(expected_close_date , '%d/%m/%y' ) as expected_close_date, wty_dept
FROM OpenROHeader roh 
JOIN OpenROData rod ON roh.id=rod.header_id 
LEFT JOIN OpenRONotes ron ON rod.key_value=ron.ro_number 
WHERE roh.customer_id='193' 
GROUP BY key_id, key_name

notes表中有2个条目-我要最新的:

id, customer_id, ro_number, expected_close_date, advisor_notes, wty_dept, date_updated
4059, 193, 'S117986', NULL, 'WTY_ON<br>- S.W.', 'on', '2018-09-24 05:02:45'
4060, 193, 'S117986', NULL, 'WTY_OFF<br>- S.A.', NULL, '2018-09-24 05:03:24'

我希望它返回select from行中id为4060而不是4059的数据(最后2列)
http://sqlfiddle.com/#!9/f00326/1/0
但不是从2018-09-24 05:03:24返回最新的“wty\ U部门”(空)
我的sql语句正在返回2018-09-24 05:02:45(较早)的上一个条目“on”
如何对连接进行排序以返回最新数据

f8rj6qna

f8rj6qna1#

我不认为你需要排序,只是确保没有一个稍后的评论。关于如何查找笔记,我做了一些假设,但假设我的假设是正确的,这应该可以为您完成(在我理解您的需求之后更新!)

SELECT file_date, advisor_notes, rod.id as id, key_id, key_name, key_value, DATE_FORMAT(expected_close_date , '%d/%m/%y' ) as expected_close_date, wty_dept
FROM OpenROHeader roh 
JOIN OpenROData rod ON roh.id=rod.header_id 
LEFT JOIN OpenRONotes ron ON rod.key_value=ron.ro_number 
WHERE roh.customer_id='193' 
and not exists (select * from OpenRONotes ron2 where rod.key_value=ron2.ro_number and ron2.date_updated>ron.date_updated)
bogh5gae

bogh5gae2#

您可以从三个表的联接中获取最新的列,如下所示:

SELECT file_date, rod_id AS id, key_id, key_name, key_value, DATE_FORMAT(expected_close_date , '%d/%m/%y' ) AS expected_close_date, wty_dept
FROM OpenROHeader roh
RIGHT OUTER JOIN 
(SELECT rod.id rod_id ,key_id,key_name ,key_value ,expected_close_date ,wty_dept ,header_id,date_updated
FROM OpenROData rod
RIGHT OUTER JOIN OpenRONotes ron 
ON rod.key_value=ron.ro_number 
ORDER BY ron.date_updated ) tab 
ON roh.id=header_id WHERE 1=1 AND
roh.customer_id='193'
ORDER BY date_updated DESC LIMIT 1;

上面的查询返回了最新的记录,其中wty\u dept列为null。检查此项并享受编码:)!!

yqyhoc1h

yqyhoc1h3#

例如,将desc放在groupby clouse后面-从student group by section desc中选择*;它会变硬的

相关问题