MySQL,从表中获取具有2个不同列的最新日期的行

奥尼威利

我有一个mysql db,每天早晨从oracle db导入数据。该表大约有3000万条记录。这大约需要5-6个小时。晚上,然后我复制表格,以便可以从显示表格内容网格的网站访问它。

桌子看起来像这样

id     userID     fieldID    date1    date2
1         1           1       2014     2014
2         1           1       2014     2016
3         1           1       2013     2017
4         1           2       2014     2016
5         2           3       2014     2016

基本上在网站上,用户输入userID,我必须显示具有最新date1和最新date2的每个fieldID的记录,因此userID = 1的输出应为:

id     userID     fieldID    date1    date2
2         1           1       2014     2016
4         1           2       2014     2016

我到目前为止使用的查询是这样的:

SELECT id,UserID,fieldID,date1,date2 FROM mytable WHERE id = 
( SELECT id from mytable AS lookup 
  WHERE lookup.fieldID = mytable.fieldID
  ORDER BY date1 DESC, date2 DESC
  LIMIT 1 ) AND UserID=1

这可行,但是查询服务器和加载页面花费的时间太长,而如果我为特定的userID选择所有内容,则只需一秒钟就可以提取约2000行

我想知道您是否可以提出一个更好的查询或一种解决方法,而不是复制表,而是仅使用所需的记录来创建新表(晚上不使用网站)。

谢谢

杰森·塞克
SELECT
id,
UserID,
fieldID,
(SELECT MAX(date1) FROM mytable WHERE fieldID=mt.fieldID) As DateOne,
(SELECT MAX(date2) FROM mytable WHERE fieldID=mt.fieldID) As DateTwo,  
FROM mytable mt 
WHERE UserID=1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取至少6个月前在Pandas DataFrame中具有最新日期的id的值

在JPA中选择具有1个条件的每个用户的最新日期的行

选择mysql中具有最新日期的行,每个quiz_id重复多次

如何获取最新记录或在mysql的列中具有所有不同值的最大对应日期的记录?

在postgres中仅选择具有最新日期的行

在mysql中,如何与第二张表联接并获得具有最新日期的行?

获取具有最新日期的文件夹

从dict获取具有最新日期时间戳的ID

如何在mysql中明智地在3行中获取最新日期?

在PySpark日期列中获取每年的最新日期

从每组的3个表中选择具有最新日期的sql行

JS:如何获取具有最新日期的对象

SQL将表中的行插入到表中,该表必须具有2个不同的列,但也必须具有一个非不同的列

如何从具有最新日期戳的JOIN中获取记录集?

在MySQL中如何使用SQL获取具有最新日期的行

如何选择具有最新日期和时间的行

如何按MySQL中不同表的两个日期字段之间的最新更新日期排序

雄辩的-获取最新日期并将结果插入到另一个表中

从两个联接表中选择具有最新日期而不重复的行?

SQL从表中获取最新日期以包含在具有内部联接的VIEW中

如何从表中获取最新日期数据

获取MySQL组中的最新日期

选择一列中具有最新日期的行

SQL 选择具有最新日期的属性列

SQL 从 2 个相同的表(具有不同的数据)中获取按人员分组的最大日期

仅返回连接表中具有最新日期的行

从具有最新日期的两个表中检索连接数据

如何从连接表中获取最新日期

如何从 MySQL Workbench 的两列中获取最新日期?