如何从每个user_id
获取最新日期数据:
用户
id | name |
1 | name 1 |
2 | name 2 |
3 | name 3 |
日期
id | date | user_id |
1 | 2018-08-13 | 1 |
2 | 2018-08-13 | 2 |
3 | 2018-08-15 | 1 |
4 | 2018-08-14 | 2 |
我如何这样输出:
user_id | date | name
1 | 2018-08-15 | name 1
2 | 2018-08-14 | name 2
3 | null | name 3
更新
我希望我的输出选择按用户表联接的日期表->并从每个user_id
中获取最后一个日期。如果我的user_id
没有日期值,它将输出{{1} }或0
答案 0 :(得分:1)
您可以使用MAX
SELECT u.UserID, MAX(d.date) date, u.name
FROM User u
left join Date d on u.id = d.id
答案 1 :(得分:1)
要获取用户的最大日期,可以使用此--p
SELECT
u.id,
u.name,
MAX(d.date) date
FROM user u
LEFT JOIN date d
ON u.id = d.user_id
GROUP BY u.id
1 name 1 15-Aug-18
2 name 2 14-Aug-18
3 name 3 (null)
答案 2 :(得分:1)
从日期d加入用户u上选择u.id,MAX(d.date),u.name d.user_id = u.id GROUP BY d.user_id
答案 3 :(得分:1)
由于您要标记Laravel,因此建议您使用查询生成器,如:
DB::table('dates')
->join('users', 'dates.user_id', '=', 'users.id')
->select(db::raw('users.name, user_id, max(date)'))
->groupBy('user_id','name')
->get();
输出:
Illuminate\Support\Collection {#2957
all: [
{#2944
+"name": "name 1",
+"user_id": 1,
+"max": "2018-08-15",
},
{#2941
+"name": "name 2",
+"user_id": 2,
+"max": "2018-08-14",
},
],
}