代码之家  ›  专栏  ›  技术社区  ›  user3065579

如何从MySQL中为每个唯一用户选择唯一事件?[副本]

  •  0
  • user3065579  · 技术社区  · 1 年前

    我有一张这样的桌子:

    click_id 事件 页面
    01 ad_click 着陆_第01页
    01 页面_查看 着陆_第01页
    01 页面_查看 着陆_第01页
    01 offer_click 着陆_第01页
    02 ad_click 着陆_第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 ad_click 着陆_第01页
    01 页面_查看 着陆_第01页
    01 offer_click 着陆_第01页
    02 ad_click 着陆_第01页
    02 页面_查看 着陆_第01页
    02 offer_click 着陆_第01页
    1 回复  |  直到 1 年前
        1
  •  0
  •   Archie Hugh    1 年前

    要从MySQL表中获取每个用户的唯一事件,可以使用以下SQL查询:

    sql 复制代码 选择DISTINCT click_id、事件、页面 来自您的表名 按click_id、事件分组; 此查询将为每个click_id提供不同的事件类型,而不会为用户重复相同的事件类型。它通过在click_id和event上使用DISTINCT关键字和GROUP by,确保每个事件类型在每个用户中只列出一次。

    至于你的数据库结构,考虑在click_id和event上实现索引以提高查询性能,特别是考虑到你的大数据集。