2016-11-16 24 views
2

Select语句我有一个SQL语句来选择数据:具有计数和不

SELECT DISTINCT count(table.data) as cntd, table.datatwo 
FROM table LEFT JOIN tabletwo ON table.id=tabletwo.tableid 
WHERE tabletwo.dated='2016-11-17' AND table.datafive='1' 

如果我把它的方式上面 - 它返回的数据如下:

cntd datatwo 
4 92 

然而正确的数据应该是:

cntd datatwo 
2 92 
2 93 

由于有两个不同的datatwo。当我选择没有继续的语句时 - 它显示datatwo

datatwo 
92 
93 

我在哪里犯了一个错误?

+1

我希望这些不是真正的表名和列名! –

+1

@Crozet为什么会这么想?这是有效的。你在谈论'table'这个词吗?我可以看到'FROM表'失败,如果它是,但不是其他人,但我怀疑这是他们真正使用。可能只有代表性。 –

+0

@ Fred-ii-我说的是非描述性的表格和列名 –

回答

5

尽管如何随机和不直观的表格命名是,它似乎你想要的是使用GROUP BY声明:

SELECT 
    DISTINCT count(table.data) as cntd, 
    table.datatwo 
FROM table 
LEFT JOIN tabletwo ON table.id=tabletwo.tableid 
WHERE tabletwo.dated='2016-11-17' 
    AND table.datafive='1' 
GROUP BY tabletwo.tableid 

COUNT语句是功能,因此它会导致行坍塌下来到一个。按每行的唯一值进行分组会导致它按照组进行聚合。

+1

谢谢。这正是我所错过的(但非常明显)。表格的命名不是表格中的内容 - 它的语言不是英语 - 所以为了这个问题,我使用了其他一些名称。但请记住下次尝试使用更好的示例。 –