MYSQL 获取 JOIN 查询中的第一个值

标签 mysql join group-by inner-join

我有 3 个表:A、B 和 C。

A 有 AID,B 有 AID 和 BID,C 有 BID 值和日期。

我需要创建一个查询,返回我的 AID 和 C 中的第一个(根据日期)值。

我尝试过:

SELECT A.AID, Value FROM A INNER JOIN B on A.AID = B.BID
INNER JOIN C ON C.BID = B.BID GROUP BY A.AID

它给了我最后一个值,而不是第一个值。

数据示例:

答:

AID: 
1 
2 
3

B:

AID BID

1   1
1   2
2   3
3   4
3   5
3   6

C:

BID Value Date
1   15   1.1.1970
1   422  1.1.1992
2   945  1.1.1975
3   149  1.1.1994
3   147  1.1.2015
4   110  1.1.2004
5   142  1.1.2005

输出应该是:

AID  Value
1     15
2     149
3     110

最佳答案

如果您没有太多具有相同值的记录,并且值没有任何逗号,那么 group_concat()/substring_index() 技巧可能是最简单的方法:

select b.aid,
       substring_index(group_concat(c.value order by c.date desc), ',' 1) as first_value
from c join
     b
     on c.bid = b.bid
group by b.aid;

大量数据需要更复杂的查询。像这样的东西:

select b.aid, c.value
from c join
     b
     on c.bid = b.bid
where c.date = (select min(c2.date)
                from c2 join
                     b2
                     on c2.bid = b2.bid
                where b2.aid = b.aid
               );

关于MYSQL 获取 JOIN 查询中的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079013/

相关文章:

mysql - 重新安装 Wamp Server 而不替换现有的 mysql 数据库

如果记录的 id 和用户名没有出现在第二个表中,MySQL 会从一个表中选择记录

mysql - 极其简单的 MySQL 查询不起作用

mysql - 如何从 MySQL 架构获取最新消息?

SQL - 通过分组来获取总和,但如果总和为 0,则返回一行

mysql - 分组 sql 查询 (mysql) - 排序依据

mysql - 删除索引查询很慢

mysql - sql中如何使用between和大于

javascript - 如何创建一个无需重新加载的自动更新新闻源?

python - 如何将 pandas 数据框转换为 datadict