2010-01-06 48 views
1

我有一个MySQL表10个字段。对于这个特定的查询,我只关心4:标题,变量,位置,日期。我想把这四个组的不同价值观,然后由标题,变量组合。但是,当我使用以下查询时MySQL DISTINCT之前组

Select DISTINCT 
     Title, 
     Variables, 
     Location, 
     Date 
    FROM ForecastsTest2 WHERE ... 
GROUP BY Variables, Title 
ORDER BY Title 

它先组合,然后取得不同的结果。有什么办法可以切换这个命令吗?

+0

没有意义。 “GROUP BY”和“DISTINCT”是彼此的同义词,区别在于DISTINCT不允许您使用聚合函数。具有不同的值,然后将这些不同的值分组将不会改变'title'和'variables'列的输出。你的预期输出是什么,你有一些样本数据? – 2010-01-06 22:59:17

+1

@OMG小马:'DISTINCT'在整行上;他想要的'GROUP BY'只在2个字段上(如果没有聚合,其他2个字段将是“随机的”)。 – 2010-01-06 23:53:02

回答

0

我最终找到在

SELECT Variables, 
     Title 
    FROM (SELECT DISTINCT Variables, 
         Title, 
         Location, 
         Date 
     FROM MyTABLE as Table1 
     ) as Table2 
     WHERE ... 
     GROUP BY Variables, Title 
     ORDER BY TITLE 

我的解决方案,我想我没有做提到这个方面做得很好,但我在查询中还增加了一个HAVING COUNT(*) >= 2。在这种情况下,计数将在删除所有非明确的行后发生。

+0

如果你只是分组字段,你不需要所有这些混乱。你真的需要'位置'和'日期'吗? – 2010-01-06 23:55:55