2013-10-15 50 views
0

例:计数的字段相同值

我有一个HUGE查询与union带来了大量的数据,这些数据当中,我想知道,多少次记录同一个人的只存在于场name如同:

加布里埃尔
- 记录1
- 记录2
- 记录3

若昂
- 记录1
- 记2
- 记3

所以加布里埃尔和若昂每一个在我的RecordSet 3个数据行,我需要有一个统计许多的它重复多次的另一个领域,而且我同时需要所有行,这就是为什么我使用groupby

更新 MySQL视图

+4

你的查询是不可读的,它不鼓励你来帮助你。做个好事,并从查询中删除一些垃圾。 – Pellared

+0

每次我尝试删除一些垃圾,只留下重要的我得到负面...我会尝试 – PlayHardGoPro

+1

看看这个问题的SQL答案:http://stackoverflow.com/questions/19385738/distinguish-duplicates-in -a-foreach-loop-from-sql/19385994在你的情况中,如果你将上面的查询放入一个VIEW中,那么它更容易在提供的链接中使用该方法对(SELECT GROUP BY )来自同一个VIEW并获得您的总数。我同意其他评论者的看法,这个查询看起来很糟糕,所以你可能会用我建议的方法来解决性能问题,但它会为你提供你所要求的。 –

回答

1

现在,你有包装的复杂的逻辑视图,你可以构建一个这样的查询,让你在找什么:

SELECT vt.*, vtij.nome_count 
FROM view_teste vt 
    INNER JOIN (SELECT Nome, count(1) as nome_count FROM view_teste 
     WHERE [additional_filter_conditions] 
      GROUP BY Nome) vtij on vtij.Nome = vt.Nome 
WHERE [additional_filter_conditions] 

其他注意事项:( 1)这可能不是高性能的,但值得尝试,因为你没有发起这个查询!优化这个查询将是一个野兽。 (2)你的视图中有一个ORDER BY子句,这是一个不必要的性能命中。你应该删除它并在你的查询中执行所需的ORDER BY,而不是在你的视图中。

+0

我知道这个查询全部搞砸了,但正如我所说,这是很久以前,而不是我。我有点困惑,究竟应该在哪里运行?我的意思是,我从来没有用过视图...; X 我知道你不必回答这样一个愚蠢的问题,但如果你能帮我一个忙hehe = x 谢谢! – PlayHardGoPro

+1

@PlayHardGoPro - 一旦你在数据库中有一个VIEW,当你编写一个查询时,你就把它当作一张表来对待。 http://stackoverflow.com/questions/6015175/difference-between-view-and-table-in-sql –

+0

谢谢!我只是对如何/在哪里插入现有的查询片断感到困惑...... – PlayHardGoPro