gpt4 book ai didi

MySQL 查询选择唯一时间戳

转载 作者:行者123 更新时间:2023-11-29 08:41:28 25 4
gpt4 key购买 nike

我有一个跟踪用户点击的数据库。如果有人点击同一件事两次,可能会在数据库中产生具有相同时间戳的重复条目。

有没有办法修改我的查询,使其仅返回具有唯一时间戳的结果,而不返回重复的结果。

$stmt1 = $dbConn1->prepare("
SELECT count(*)
FROM asset_lookup
");

最佳答案

注释:

  • 连接到product 100% 相当于 INNER加入是因为您使用 product.product_type_id = 2WHERE条款。除此之外,是否有必要计算 product 中不存在的产品的点击次数?表且仅在 asset 中表(如果有的话)?

  • LEFT加入event 100% 相当于 INNER加入是因为您使用 event.activation_dateWHERE条款。

  • 连接到tracking_product_lookup看起来完全没用。

  • COUNT(*)外连接可能会给出错误的结果。 COUNT(*)对中间结果集中的行进行计数,外连接会生成某些列中包含 Null 的行(例如根本没有点击的产品,仍会显示计数为 1)。

  • 要回答实际问题,如果您想计算不同的时间戳,请使用 COUNT(DISTINCT column) ,不是COUNT(*) .

查询将写为:

SELECT product.id, product.name, 
count(DISTINCT asset_lookup.timestamp)
FROM asset_lookup
JOIN product ON asset_lookup.product_id = product.id
JOIN event ON asset_lookup.event_id = event.id
WHERE asset_lookup.event_id = ?
AND product.product_type_id = 2
AND asset_lookup.timestamp > event.activation_date
GROUP by asset_lookup.product_id ;

关于MySQL 查询选择唯一时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com