Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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-有count(*)而没有分组依据_Mysql_Group By - Fatal编程技术网

MYSQL-有count(*)而没有分组依据

MYSQL-有count(*)而没有分组依据,mysql,group-by,Mysql,Group By,我有一张MySQL表 discount_vouchers ------------------ id email test_id 我的目标是通过以下方式列出组中使用给定电子邮件和给定测试id多次出现的所有凭单: GROUP BY email, test_id HAVING count(*) >1 如何通过以下方式阅读此组 以下是一个例子: discount_vouchers ------------------ 1 1@test.com 20 2 1@test.com

我有一张MySQL表

discount_vouchers
------------------
id
email
test_id
我的目标是通过以下方式列出组中使用给定电子邮件和给定测试id多次出现的所有凭单:

GROUP BY email, test_id
HAVING count(*) >1
如何通过以下方式阅读此组

以下是一个例子:

discount_vouchers
------------------
1    1@test.com    20
2    1@test.com    10
3    1@test.com    20
4    2@test.com    30
因此,我希望:

id     email     test_id   count
1    1@test.com    20       2
2    1@test.com    10       1
3    1@test.com    20       2
4    2@test.com    30       2

试试下面的方法

SELECT C2, counter from 
(SELECT C2, COUNT(*) as counter FROM test.mytable
GROUP BY C2) as aggregation
WHERE counter > 1
不使用分组方式,您可以执行以下操作

SELECT a.* , 
   (SELECT count(*) FROM discount_vouchers b 
    WHERE a.email = b.email AND a.test_id = b.test_id) as count
FROM discount_vouchers a
这个怎么样? 使用子查询进行聚合,并使用其结果来丰富实际表:

SELECT `discount_vouchers`.*, `counts`.`count`
FROM   `discount_vouchers`
       INNER JOIN (SELECT `email`, `test_id`, Count(*) AS 'count' 
                   FROM   `discount_vouchers`) AS `counts` 
           ON `discount_vouchers`.`email` = `counts`.`email`
          AND `discount_vouchers`.`test_id` = `counts`.`test_id`;

尝试此操作,通过电子邮件>1从折扣券组中选择计数*,或通过测试id>从折扣券组中选择计数*1@gamitg,这不起作用,它将更改查询的逻辑。“分组依据”有什么问题??另外,我不明白结果集与数据集之间的关系。@草莓:看起来OP希望计数结果应用于未分组数据的每一行。e、 g.获得分组结果,而不需要实际grouping@MarcB我想你是对的,但结果集目前并没有反映出这种雄心壮志。嗨,dchar,你能在这里提供更多细节吗?内部查询执行分组依据,并计算每个值出现的次数。在本例中,必须为内部查询分配别名。然后有一个对内部查询结果执行的外部查询,只选择计数器大于1的记录。事实上,这并不像预期的那样有效,我仍然只得到带有Group BY ran的C2,我需要所有C2值,而不仅仅是grouped BY。请举例说明一下?也许用小提琴,这会有帮助。group by查询应该返回所有C2值,只要它们至少存在一次。事实上,查询返回所有C2值,只要它们至少存在一次,但在我的例子中,返回的值由两个字段分组。我的目标是拥有所有凭证折扣ID,没有组BYHi Nitai,这只会返回一个结果。@Miloš-我必须承认我已经检查了查询,我不知道为什么它会失败。你能给问题添加一个测试用例,或者一个数据样本吗?我已经理解了你的要求。