草庐IT

mysql - 选择特定日期的最新版本

coder 2023-10-13 原文

-------------------------
| ID | RID | DATE       | // TABLE A
-------------------------
| 1  | 1   | 2015-01-01 | // 1st edition
| 2  | 2   | 2015-01-01 | // 1st edition
| 3  | 1   | 2015-02-01 |   // 2nd edition
| 4  | 4   | 2015-01-01 | // 1st edition
| 5  | 1   | 2015-05-01 |     // 3rd edition
| 6  | 6   | 2015-01-01 | // 1st edition
| 7  | 6   | 2015-01-10 |     // 3rd edition
| 8  | 6   | 2015-01-12 |       // 4th edition
| 9  | 6   | 2015-01-02 |   // 2nd edition
-------------------------

表 A 由描述“文件版本”的记录组成。至今, 我已经能够生成一个 SELECT 语句来选择 最新版本:

    SELECT `t1`.`id` AS `id`, `t1`.`rid` AS `rid`, `t1`.`date` AS `date`
    FROM `table_a` `t1`
    WHERE (`t1`.`date` = (
        SELECT MAX(`t2`.`date`)
        FROM `table_a` `t2`
        WHERE (`t2`.`rid` = `t1`.`rid`)
    ))

这给了我这样的东西:

-------------------------
| ID | RID | DATE       | // TABLE B
-------------------------
| 2  | 2   | 2015-01-01 | // 1st edition
| 4  | 4   | 2015-01-01 | // 1st edition
| 5  | 1   | 2015-05-01 |     // 3rd edition
| 8  | 6   | 2015-01-12 |       // 4th edition
-------------------------

但我的问题是,如何调整 SELECT 语句以便获得特定日期的所有最新版本?例如,说我 想找到截至 2015 年 1 月 11 日的最新版本?我想得到类似于表 C 的结果:

-------------------------
| ID | RID | DATE       | // TABLE C
-------------------------
| 1  | 1   | 2015-01-01 | // 1st edition
| 2  | 2   | 2015-01-01 | // 1st edition
| 4  | 4   | 2015-01-01 | // 1st edition
| 7  | 6   | 2015-01-10 |     // 3rd edition
-------------------------

如果已经有解决方案,我提前表示歉意,但我已经尝试使用这些关键字/短语进行搜索:“mysql select latest edition as of date”并且到目前为止发现的帮助很少......

我也意识到我可能想得太多了,它可能是一个非常简单的调整,比如修改 SELECT MAX 或向第二个 WHERE 子句添加另一个条件。

谢谢


更新:感谢 Musa,我需要逐步考虑;一种不同的方法。第一步需要选择所有日期 <= 2015-01-11。第二步是过滤掉="" id="RID" 的="" max(date)(即最新版本)。至于将两个="" select="">

最佳答案

我认为你可以这样做:

SELECT 
    `t1`.`id` AS `id`, 
    `t1`.`rid` AS `rid`, 
    `t1`.`date` AS `date`
FROM `table_a` `t1`
WHERE 
    `t1`.`date` = (
        SELECT MAX(`t2`.`date`)
        FROM `table_a` `t2`
        WHERE (`t2`.`rid` = `t1`.`rid`)
    ) 
    and `t1`.`date` <= '2015-01-11' # I have added this line

您希望最新版本小于或等于另一个日期(此处为 2015-01-11),因此我认为您可以通过在 中添加和 AND 部分来获取它WHERE 子句。您的查询的其余部分是相同的。

关于mysql - 选择特定日期的最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978288/

有关mysql - 选择特定日期的最新版本的更多相关文章

  1. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  2. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  3. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  4. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  5. ruby - 检查日期是否在过去 7 天内 - 2

    我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/

  6. ruby-on-rails - 将 Ruby 中的日期/时间格式化为 YYYY-MM-DD HH :MM:SS - 2

    这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build

  7. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  8. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  9. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  10. ruby - Rails 3 的 RGB 颜色选择器 - 2

    状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基

随机推荐