mysql 两字段组合求最新的所有数据 求解

一起来解题 我是做不出来

比如·下面这个错误例子:拿出来的ID是不对的 是旧的

SELECT ID,A字段,B字段,MAX(时间)  FROM table_name GROUP BY A字段,B字段

需要 :

每个A字段 和B字段匹配的 最新时间的所有数据 而不是只要一个ID

重点:

  • 这个时间 是每个A字段都不同的 也许这个数据有今天的 但是别的数据只有昨天的 前天的

  • 每个A字段 可能有100条数据 可能有1条数据

  • B字段全部是重复的 大约有几百条 有的A字段可能全表都有B字段的组合 也可能只有某几个

可能只有第一条对你们有用,顺便提一下

数据量

千万级表,需要考虑效率

mysql 两字段组合求最新的所有id 求解

如何让以上题目的结果为:

ID A字段   B字段   时间

1  1234  6666661  昨天 
3  1236  6666663  前天
6  1234  6666662  大前天
7  1235  6666661  今天
8  1237  6666663  今天

例子

比如:姓名为1234的数据是这样子拿的
然后拿1235的 1235 有6666662 和6666661 都是不一样的 所以全部都要

目前1234 和1235的加起来就拿到id为1、2、6、7

然后去拿1236的 这样子下来

mysql 两字段组合求最新的所有数据 求解

注意:这个是看着数据库做的 写查询的时候 可完全不知道 他对应的手机号有哪些 哪些是重复的

chowjiawei
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 17
chowjiawei

坐等英俊帅气有钱前途一片光明有智慧的大佬

2年前 评论

SELECT DISTINCT(CONCAT_WS('_',A,B)),id as A_B FROM table_name ORDER BY id desc LIMIT 10

2年前 评论
chowjiawei (楼主) 2年前
zhangwuphp (作者) 2年前
chowjiawei (楼主) 2年前

如果拿你新举的例子来看,你一开始编写的sql是没有问题的

file

file

2年前 评论
chowjiawei (楼主) 2年前
巴啦啦臭魔仙 (作者) 2年前
chowjiawei (楼主) 2年前
chowjiawei (楼主) 2年前
SELECT t1.* from table_name as t1 join (select A字段,B字段,MAX(时间)  FROM table_name GROUP BY A字段,B字段) as t2  on t1.A字段=t2.A字段 and t1.B字段=t2.B字段 and t1.时间=t2.MAX(时间)
2年前 评论
chowjiawei (楼主) 2年前
bb-bear (作者) 2年前
chowjiawei

一位朋友提供的,但是这个结果我发现 没有历史的数据 就是比如A字段和B字段昨天一共50条数据 今天只有49条 剩余的那条 我也需要得到 而不是只有这49条~~

SELECT
    c.* 
FROM
    test c
    RIGHT JOIN (
    SELECT
        A字段,
        max( create_date ) AS 时间 
    FROM
        ( SELECT * FROM test a ORDER BY a.id, a.A字段 ASC ) b 
    GROUP BY
        A字段 
    HAVING
        count( 1 )> 0 
    ) d ON ( d.A字段 = c.A字段 AND d.时间 = c.A字段 );
2年前 评论

嘚,菜鸟表示题都没明白 :neutral_face:

2年前 评论
chowjiawei (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!