我是 ES 的新手,我需要进行查询
Select value
from table
group by value
having count(distinct(id)) > 1
我什至没有可以开始的领域。 引用这个 SQL 就像 GROUP BY 和 HAVE 没有多大帮助。
数据示例
------------
Value | id |
------------
val1 | 2 |
val2 | 2 |
val3 | 2 |
val1 | 3 |
------------
预期回报
----
val1
----
由于您是Elasticsearch的新手,并且正在研究SQL,因此我建议您查看Elasticsearch-SQL。文档在这里。
关于您的特定查询,您可以尝试使用translate
API,它将为您提供它将为给定SQL查询运行的Elasticsearch查询。这可以成为最终 Elasticsearch 查询的一个很好的起点。或者,您可以按原样使用 ES-SQL 和_sql
终结点来发送 SQL 查询并获取结果。
你应该在这里断言COUNT(value)
或COUNT(*)
:
SELECT value
FROM yourTable
GROUP BY value
HAVING COUNT(*) > 1;
断言COUNT(DISTINCT value) > 1
的问题在于,这个条件永远不会成立。 它永远不会是真的原因是,在GROUP BY
完成后,每个组将包含一个且只有一个Value
.
试试这个。
Select value
from table
group by value
having count(distinct value) > 1
试试这个
SELECT value
FROM table
GROUP BY value
HAVING COUNT(*) > 1;
检查此链接