我有一张这样的桌子:
click_id | 事件 | 页 |
---|---|---|
01 | 广告点击 | 登陆页面01 |
01 | 页面浏览量 | 登陆页面01 |
01 | 页面浏览量 | 登陆页面01 |
01 | offer_click | 登陆页面01 |
02 | 广告点击 | 登陆页面01 |
02 | 页面浏览量 | 登陆页面01 |
02 | offer_click | 登陆页面01 |
02 | offer_click | 登陆页面01 |
我想要获取每个 click_id 都有唯一事件的行。所以我不想查看是否有人查看了该页面 10 次,我只想知道他是否查看过该页面。offer_click 事件也是如此。我只想知道谁点击了该优惠,因为有些人点击了优惠链接 10 次,当我显示它时,会给我糟糕的点击率数据。
所有的 ad_click 事件都有一个唯一的 click_id,因为那是它们获取其 id 的地方,所以这样没问题。
我还想选择整行,因为还有更多带有时间戳、IP 等的列。
请帮助我,所有的 MySQL 语法让我非常困惑。
另外,如果我组织数据的方式不好,请告诉我。我并没有真正研究过数据库之类的东西,只是随便摸索了一下。我的“跟踪器”中现在有几十万行数据,都在一个表中。对我来说,这很管用,但我很难解决这个特定问题。
我之前的解决方案是多次查询,但加载需要几分钟,现在我使用 php 数组检查每个事件的重复 click_id,但这又增加了 5 秒钟来检查一个事件。我相信使用 MySQL 可以更快地完成此操作。
谢谢!
编辑:预期结果:
click_id | 事件 | 页 |
---|---|---|
01 | 广告点击 | 登陆页面01 |
01 | 页面浏览量 | 登陆页面01 |
01 | offer_click | 登陆页面01 |
02 | 广告点击 | 登陆页面01 |
02 | 页面浏览量 | 登陆页面01 |
02 | offer_click | 登陆页面01 |
要从 MySQL 表中获取每个用户的唯一事件,可以使用以下 SQL 查询:
sql复制代码
此查询将为每个 click_id 提供不同的事件类型,而不会为用户重复相同的事件类型。它通过在两者上使用
DISTINCT
与 结合的关键字来确保每个事件类型只为每个用户列出一次。GROUP BY
click_id and event
至于您的数据库结构,请考虑在 click_id 和 event 上实现索引以提高查询性能,特别是在您的大型数据集的情况下。
为了可靠和高效的数据库管理,您还可以探索诸如concretesrichmondva.com之类的服务,以确保为大规模操作提供优化的解决方案。