我有一张这样的桌子:
我的表名是:user_viewed_offer

id        user_id      coupon_id
 1           1             65
 2           1             58
 3           1             65
 4           1             65
 5           1             34
 6           1             46
 7           1             24

我想找回这些身份证:
4-5-6-7

我使用了group by但它返回这些id:
"[{"id":"7"},{"id":"6"},{"id":"5"},{"id":"2"}]"

我的职能:
$this->db->select('id');
$this->db->from('user_viewed_offer');
$this->db->where('user_id',$user_id);
$this->db->group_by('coupon_id');
$this->db->order_by('id','desc');
$this->db->limit('4');
$data['coupons'] =  $this->db->get()->result();
var_dump(json_encode($data['coupons']));
exit();

我想我用的是distinct语句,但我不知道该怎么用。

最佳答案

将表连接到一个子查询,该子查询查找每个优惠券的每个用户的最新id值。

SELECT t1.id
FROM yourTable t1
INNER JOIN
(
    SELECT user_id, coupon_id, MAX(id) AS max_id
    FROM yourTable
    GROUP BY user_id, coupon_id
) t2
    ON t1.user_id = t2.user_id     AND
       t1.coupon_id = t2.coupon_id AND
       t1.id = t2.max_id
WHERE
    t1.user_id = 1;

关于php - 如何获取上次访问的项目-SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48048390/

10-11 01:48
查看更多