【问题标题】:mysql select querymysql选择查询
【发布时间】:2011-09-18 14:17:44
【问题描述】:

我搜索并获得 10 条记录作为结果。我有两个下拉框。一个将具有月份作为值,另一个将具有年份作为值。假设这 10 条记录具有相同的年份,5 条具有月份作为 jan 和其他五月是二月。

当用户点击 2 月时,五个 id 将传递给我的查询,但我需要提取较年轻的文档。2 月 5 日插入了 2 个文档,2 月 10 日插入了其他文档,2 月 25 日插入了剩下的一个。我需要在 2 月 25 日提取文件。

如何使用 select 语句选择它?

【问题讨论】:

  • 请用适当的例子详细说明您的问题
  • @Kishan Gajjar:我已经解释的很清楚了。你没看懂的地方。

标签: php mysql


【解决方案1】:

您可以从数据库中提取日期和时间并将它们显示给用户,以便他选择正确的文档,否则您可以解决:

SELECT * 
FROM TABLE 
WHERE month = 'Feb' 
  AND year = 2011 
  AND day = (select max(day) from table where month = 'Feb' and year = 2011 )

但是我假设这里有很多信息,这些信息应该可以帮助我帮助您:

  • 表名
  • 字段和字段类型
  • 您有办法正确跟踪时间戳和日期吗?

【讨论】:

  • 这是一个视角问题:如何向不知道想要什么的人展示一些东西? (哲学:D)你总是可以假设一个默认年份:我不知道,2011 年或者只是使用 max(year) 就像你使用 max(day) 一样,正如我告诉你的那样,了解你的表结构和/或计时字段。
  • 我得到 o/p 作为四个记录,但对于这个查询,它应该只显示最大日期记录。我有四列日期月份年份和这三个组合的 yyyy-mm-dd。
  • 尝试 select max(threecombined) from table where month = 'Month' and year = 'year' 它应该选择你想要的月份和年份的最大日期。顺便说一句:安排日期的方式多么奇怪......
  • 我试过你的答案,但我得到了很多记录作为 o/p。我应该只得到一个最大值。
【解决方案2】:

大概你的数据库中有一些 date_inserted 列 - 如果是这样,你可以添加

ORDER BY date_inserted DESC LIMIT 1

这将使它们以相反的日期顺序排列,LIMIT 1 将使其仅返回 1 个结果

【讨论】:

    【解决方案3】:

    这应该可行:

    SELECT *
    FROM `table`
    WHERE MONTH(`insert_date`) = 2
    AND YEAR(`insert_date`) = 2011
    ORDER BY `insert_date` DESC
    LIMIT 1;
    

    注意:以上假设您的表格中有一个字段用于存储文档的创建/插入日期。请将上述查询中的insert_datetable分别替换为相应的列名和表名。

    EDITED在此评论“日期存储日期,月份存储月份和年份存储年份”之后

    SELECT *
    FROM `table`
    WHERE `month` = 2
    AND `year` = 2011
    ORDER BY `year` DESC, `month` DESC, `date` DESC
    LIMIT 1;
    

    我假设您在 month 列中存储数字,1 代表 1 月,2 代表 2 月,依此类推。但是,如果您要存储 3 个字母的月份名称,那么请使用以下命令代替 "`month` = 2":

    MONTH(STR_TO_DATE(`month`, '%b')) = 2
    

    希望这应该可行。

    【讨论】:

    • 我分别有日期和年份的列,那么查询将如何来
    • @user22115:日期列是否仅存储日期或日期-月份?我觉得应该很简单。使用您拥有的 2 列,假设一个存储日期-月份(例如 21/06)和另一个仅存储年份(例如 2011),查询可能类似于:SELECT *, STR_TO_DATE(CONCAT(`insert_datemonth`, '/', `insert_year`), '%d/%m/%Y') as `ins_date` WHERE ... ORDER BY `ins_date` DESC ...。希望对你有帮助
    • Nope.date 存储日期,月份存储月份和年份存储年份。
    • @delete my account:请查看我根据您上次反馈的更新查询,即日期、月份和年份分别有 3 个不同的列
    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2011-08-10
    • 2015-02-12
    • 2015-05-20
    • 2013-04-25
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多