我正在使用DB2,并且正在尝试计算名为ML_MEASURE的表中的重复行。我在此表中定义为副本的行是包含相同DATETIME和TAG_NAME值的行。所以我在下面尝试了这个:
def index(Integer max) {
params.max = Math.min(max ?: 10, 100)
def Actor = //sql logic to populate actor list
def ActorInstanceList = Actor.list(params) //invalid
model:[ActorInstanceList: ActorInstanceList]
}
查询没有失败,但我得到一个空结果,即使我现在有一个事实我至少有一个副本,当我在下面尝试这个查询时,我得到的结果对于这个特定的tag_name和datetime是正确的: / p>
SELECT
DATETIME,
TAG_NAME,
COUNT(*) AS DUPLICATES
FROM
ML_MEASURE
GROUP BY DATETIME, TAG_NAME
HAVING COUNT(*) > 1
第二个查询的结果如下所示:
SELECT
DATETIME,
TAG_NAME,
COUNT(*) AS DUPLICATES
FROM
ML_MEASURE
WHERE
DATETIME='2018-03-23 15:09:30' AND
TAG_NAME='HOG.613KU201'
GROUP BY
DATETIME,
TAG_NAME.
在第一个查询中我做错了什么?
*更新*
我的桌子排成一排,不确定这是否有所不同。
答案 0 :(得分:0)
是的,您应该在第一个查询中获得相同的行。如果这两列上有NOT ENFORCED TRUSTED
主键或唯一约束,那么优化器将拥有信任约束并且不返回任何行的权限。但是,通过快速测试,我不相信它会对此查询执行此操作。
你在桌子上定义了哪些索引?
(P.S。我假设您没有从shell提示符运行查询并将输出重定向到名称为1
的文件)
答案 1 :(得分:0)
这对我有用:
SELECT * FROM (
SELECT DATETIME, TAG_NAME, COUNT(*) AS DUPLICATES
FROM ML_MEASURE
GROUP BY DATETIME, TAG_NAME
) WHERE DUPLICATES > 1