我有 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/