You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询DATETIME字段中指定关联ID对应最早日期的全部数据

MySQL 查询方案

假设你的表名为your_table_name,可根据实际业务表名替换。

方案1:兼容所有MySQL版本的子查询写法

SELECT * 
FROM your_table_name
WHERE material_referenceid = 13 
AND material_cas = (
    SELECT MIN(material_cas) 
    FROM your_table_name 
    WHERE material_referenceid = 13
);

逻辑说明

  • 内层子查询先查出material_referenceid=13的所有记录里最小的material_cas值
  • 外层查询筛选出同时满足material_referenceid=13、material_cas等于上述最小值的所有行,可正确返回最早日期对应的全部行
  • 将语句中的数值13替换为你需要查询的任意material_referenceid值即可生效

方案2:MySQL 8.0+ 窗口函数写法

如果你的MySQL版本在8.0及以上,可以用RANK()窗口函数实现,扩展性更强,后续需要批量查询多个关联ID的最早日期记录时修改成本更低:

WITH ranked_material AS (
    SELECT *,
    RANK() OVER(PARTITION BY material_referenceid ORDER BY material_cas ASC) AS rk
    FROM your_table_name
    WHERE material_referenceid = 13
)
SELECT material_id, material_referenceid, material_cas 
FROM ranked_material
WHERE rk = 1;

逻辑说明

  • 先对material_referenceid=13的所有记录按material_cas升序排序,相同日期的记录排名一致
  • 筛选排名为1的记录就是最早日期的全部行

内容的提问来源于stack exchange,提问作者Michal Čabala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:24:10