mysql选择第一个结果_mysql – 选择第一个结果是特定值的行

我有一个自定义编写的分析系统正在运行,我正在尝试编写一个查询,返回登陆特定页面的用户作为他们的第一个命中.表格的相关部分是这样设置的,有一些简单的数据:

pageviews Table

+----+---------------------+----------+-------------+

| id | time_in | users_id | articles_id |

+----+---------------------+----------+-------------+

| 0 | 2013-08-15 00:00:00 | 0 | 0 |

| 1 | 2013-08-16 00:00:00 | 0 | 1 |

| 2 | 2013-08-17 00:00:00 | 1 | 1 |

| 3 | 2013-08-18 00:00:00 | 1 | 0 |

| 4 | 2013-08-19 00:00:00 | 1 | 1 |

| 5 | 2013-08-20 00:00:00 | 2 | 1 |

+----+---------------------+----------+-------------+

注意:我的数据库中的ID字段实际上使用GUID,而不是像这个简单示例中的int.

现在,如果我想看看谁将第1篇文章作为第一次阅读,我希望我的查询返回用户1和2,但不是0,因为用户0看到第0页是他们在网站上的第一次点击.相反,如果我想看看谁先读了第0条,那么查询只会返回用户0.

这是我到目前为止的查询:

SELECT

*

FROM

pageviews

WHERE

articles_id = 1

GROUP BY

users_id

ORDER BY

time_in

但是,这会为阅读过第1条的所有用户返回不同的用户ID,而不会过滤掉未将其视为第一个结果的用户.我觉得我的查询方向错了,所以我转向你们.

提前致谢.

最佳答案 一种方法

SELECT v.users_id

FROM pageviews v JOIN

(

SELECT users_id, MIN(time_in) time_in

FROM pageviews

GROUP BY users_id

) q ON v.users_id = q.users_id AND v.time_in = q.time_in

WHERE v.articles_id = 1

输出:

| USERS_ID |

------------

| 1 |

| 2 |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值