【发布时间】:2017-01-01 10:38:10
【问题描述】:
当我执行时
select *, count(*) c
FROM mytable
GROUP BY col3, col4
HAVING c > 1
order by col4, col3;
我期望获得对于任何值的行,在选择中,至少有两个等效项(col3、col4)。 但是,我得到的结果是只有一行出现一些 col3 值。谁能解释一下为什么?
换句话说,我正在尝试构建一个查询,以获取所有行的对 (col3, col4) 出现不止一次。
意外结果的例子是这样的:
id - col1 - col2 - col3 - col4 - c
123- val1 val123 43 val444 2
456- val14 val52 45 val444 2
列 col3 中的 43 永远不会出现在结果中,但我希望如此。否则该行不应出现在结果中。
正确,
select * from ukberu1m where col3=43 and col4=val444;
在原始表中给出两个结果,但在结果表中,如意标准只显示一行,而不是出于某种原因显示两个。
【问题讨论】:
-
那个查询应该做你想做的事。你能发布一些得到错误结果的示例数据吗?
-
您选择的非聚合列可能比 group by 子句中列出的多;要获取所有列,请使用子查询