我想在mysql中使用join将多个记录中最新的一行放到表中
我已经参考了stackoverflow和其他博客中的一些帖子,并试图修复我的案例,但我认为我的案例中还有其他一些问题。
我有两张表:第一张是优惠券,第二张是优惠券数据
在表中,优惠券包含所有优惠券代码,优惠券数据包含优惠券的详细信息及其兑换日期和其他信息。在这种情况下,优惠券将被多次扫描,因此其具有多次扫描日期
这样地
优惠券
+----------+--------------+
| coupon_id | coupon_code |
+----------+--------------+
| 1 | coupon1 |
| 2 | coupon2 |
| 3 | coupon3 |
+----------+--------------+
优惠券数据
+----+------------+-------------+
| id | scan_date | coupon_code |
+----+------------+-------------+
| 1 | 2018-04-18 | coupon1 |
| 2 | 2018-04-20 | coupon2 |
| 3 | 2018-04-22 | coupon2 |
| 4 | 2018-04-25 | coupon1 |
| 5 | 2018-04-27 | coupon1 |
| 6 | 2018-04-28 | coupon3 |
+----+------------+-------------+
现在我需要最新的场景优惠券及其扫描日期
我试图用这个查询获取数据
SELECT *
FROM coupon c
left JOIN (
SELECT MAX(id) max_id, scan_date,coupon_code
FROM coupon_data
GROUP BY coupon_code
) c_max ON (c_max.coupon_code = c.coupon_code)
left JOIN coupon_data cd ON (cd.coupon_code = c_max.coupon_code)
但运气不好。我的目标是获取这样的数据。
+-------------+------------+
| coupon_code | scan_date |
+-------------+------------+
| coupon1 | 2018-04-27 |
| coupon2 | 2018-04-22 |
| coupon3 | 2018-04-28 |
+-------------+------------+
如有回复,不胜感激。
1条答案
按热度按时间aurhwmvo1#
如果您真的只需要这么多的数据,并且表中包含的数据与前面提到的相同,则不需要子查询和联接。
试试这样的
这将返回预期结果。
试试这个演示