Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在where子句中查找第一个_Mysql - Fatal编程技术网

Mysql 在where子句中查找第一个

Mysql 在where子句中查找第一个,mysql,Mysql,我在这里搜索过,也许我不知道写问题的确切方式,但找不到答案 我需要从click_stats中找到所有用户的积分总和,其中source='reward',这些用户至少声明了3个促销代码中的一个,并且显示了总点击次数。有很多比3,但简化了我需要努力满足张贴标准 表: +---------------------------------------------+ | click_stats | +----+---------+------

我在这里搜索过,也许我不知道写问题的确切方式,但找不到答案

我需要从click_stats中找到所有用户的积分总和,其中source='reward',这些用户至少声明了3个促销代码中的一个,并且显示了总点击次数。有很多比3,但简化了我需要努力满足张贴标准

表:

+---------------------------------------------+
| click_stats                                 |
+----+---------+--------+--------+------------+
| ID | Credits | Userid | Source | Clicked    |
+----+---------+--------+--------+------------+
| 1  | 10      | jon    | reward | 1602216005 |
+----+---------+--------+--------+------------+
| 2  | 5       | bob    | reward | 1602216504 |
+----+---------+--------+--------+------------+
| 3  | 5       | jon    | reward | 1602216137 |
+----+---------+--------+--------+------------+
| 4  | 5       | bob    | reward | 1602216138 |
+----+---------+--------+--------+------------+
| 5  | 10      | jon    | reward | 1602216139 |
+----+---------+--------+--------+------------+
| 6  | 5       | jon    | reward | 1602216140 |
+----+---------+--------+--------+------------+
| 7  | 10      | bob    | reward | 1602216150 |
+----+---------+--------+--------+------------+
| 8  | 10      | jon    | reward | 1602216150 |
+----+---------+--------+--------+------------+
+----+---------+--------+--------+------------+
| 9  | 10      | sue    | reward | 1602216150 |
+----+---------+--------+--------+------------+
+----+---------+--------+--------+------------+
| 10  | 10     | sue    | prize  | 1602216150 |
+----+---------+--------+--------+------------+
我的问题是:

SELECT 
    click_stats.userid  as Name, 
    sum(credits) as TotalClicks 
  FROM click_stats
    JOIN promo_used 
    ON click_stats.userid = promo_used.userid
    JOIN promo_codes 
        ON promo_used.promoid = promo_codes.id
WHERE
   click_stats.source = 'reward' 
   and FROM_UNIXTIME(clicked) > '2020-10-09' 
   and (promo_codes.name like '%forever%' 
        or promo_codes.name like 'novgfy%')
group by 
   Name
having 
   TotalClicks > 10
运行查询时的结果(返回总点击数*使用的促销代码数):

我想要的结果(仅限点击总数):


问题是(我怀疑)每次找到与promo_code.name匹配的数据时,它都会对click_统计数据求和。我只需要知道其中一个是否已被使用,然后返回该用户的总点击数。

不要将
单击统计数据
加入到其他表中,因为您将获得的行数乘以一个因子,该因子等于
促销使用的每个用户的行数
而是使用
中的运算符
来过滤用户:

SELECT Userid, SUM(Credits) TotalClicks 
FROM click_stats
WHERE source = 'reward' 
  AND FROM_UNIXTIME(clicked) > '2020-10-09'
  AND Userid IN (
    SELECT pu.Userid 
    FROM promo_used pu INNER JOIN promo_codes pc
    ON pc.id = pu.promoid
    WHERE pc.code like '%forever%' OR pc.code like 'novgfy%' 
  )
GROUP BY Userid 
HAVING TotalClicks > 10
或:

请参阅。
结果:


请提供样本数据和预期结果。您的查询引用了4个表,我们对此一无所知。谢谢GMB,我已经在我的原始问题中添加了更多细节。按照@GMB的要求,请提供示例数据和预期结果。这是这个网站需要的一部分。我添加了一个预期结果的示例。不确定需要什么样的样本数据。如果这不正确,我将删除该问题并继续搜索,当我了解它如何更好地工作时,返回这里。谢谢你的帮助,谢谢!这就是我要找的。
SELECT 
    click_stats.userid  as Name, 
    sum(credits) as TotalClicks 
  FROM click_stats
    JOIN promo_used 
    ON click_stats.userid = promo_used.userid
    JOIN promo_codes 
        ON promo_used.promoid = promo_codes.id
WHERE
   click_stats.source = 'reward' 
   and FROM_UNIXTIME(clicked) > '2020-10-09' 
   and (promo_codes.name like '%forever%' 
        or promo_codes.name like 'novgfy%')
group by 
   Name
having 
   TotalClicks > 10
+--------------------+
| Results            |
+------+-------------+
| Name | TotalClicks |
+------+-------------+
| bob  | 60          |
+------+-------------+
| jon  | 80          |
+------+-------------+
+--------------------+
| Expected Results   |
+------+-------------+
| Name | TotalClicks |
+------+-------------+
| bob  | 20          |
+------+-------------+
| jon  | 40          |
+------+-------------+
SELECT Userid, SUM(Credits) TotalClicks 
FROM click_stats
WHERE source = 'reward' 
  AND FROM_UNIXTIME(clicked) > '2020-10-09'
  AND Userid IN (
    SELECT pu.Userid 
    FROM promo_used pu INNER JOIN promo_codes pc
    ON pc.id = pu.promoid
    WHERE pc.code like '%forever%' OR pc.code like 'novgfy%' 
  )
GROUP BY Userid 
HAVING TotalClicks > 10
SELECT Userid, SUM(Credits) TotalClicks 
FROM click_stats
WHERE source = 'reward' 
  AND FROM_UNIXTIME(clicked) > '2020-10-09'
  AND Userid IN (
    SELECT pu.Userid FROM promo_used pu 
    WHERE EXISTS (
      SELECT 1 FROM promo_codes pc
      WHERE pc.id = pu.promoid AND (pc.code like '%forever%' OR pc.code like 'novgfy%' )
    ) 
  )
GROUP BY Userid
HAVING TotalClicks > 10
> Userid | TotalClicks
> :----- | ----------:
> bob    |          20
> jon    |          40