如何忽略sybase中的重复记录?

时间:2016-11-22 22:21:57

标签: distinct sybase-ase select-query

我试图从表中检索唯一的记录,但我想我的查询有问题。

select distinct RIID, duplicateInfo from duplicateRecords where RIID > 3920011

当我执行上述查询时,我得到了这个结果

RIID   |   duplicateInfo 
___________________________________
3920011    Repeated:12009:CLEAR
3920011    Repeated:12012:CLEAR
4233901    Repeated:18129:HIT
4820129    Repeated:22901:PENDING
4820129    Repeated:22983:PENDING

我想要以下结果

RIID   |   duplicateInfo 
___________________________________    
3920011    Repeated:12012:CLEAR
4233901    Repeated:18129:HIT
4820129    Repeated:22983:PENDING

请高度赞赏任何帮助。

由于

3 个答案:

答案 0 :(得分:1)

select distinct RRID,
    (select duplicateInfo 
    from duplicateRecords m 
    where m.RIID = duplicateRecords.RRID 
    having cast(substring(duplicateInfoNumber,10,6) as int) = min(cast(substring(duplicateInfoNumber,10,6) as int)))
from duplicateRecords
where RRID > 3920011

答案 1 :(得分:0)

我没有sybase来测试它。 这是一个来自mysql的例子,可以给你一些指示。

function [y]=function_PhaseShifter(x)
    %Here do some simulink work
    %where X is the input to simulink block
    %y is assigned from simulink block's result
end

答案 2 :(得分:0)

有一种更简单,更有效的方法 - 但前提是您在Sybase ASE上运行(不适用于Sybase IQ或Sybase SQL Anywhere)。 首先,这是一个重复的密钥'问题,而不是重复的行'问题。 下面的技巧将删除所有具有重复键的行。但请注意,在重复键的情况下,没有定义要选择哪一行 - 所以保留第一行,其余部分被丢弃。因此,您应该在SELECT查询中应用一些排序,以实现不同的选择标准

CREATE TABLE uniquetab(RRID ...,duplicateInfo ...) 走 使用IGNORE_DUP_KEY在uniquetab(RRID)上创建UNIQUE INDEX ix 去

INSERT uniquetab SELECT * FROM duplicateRecords ORDER BY 去

另一种方法是BCP-out duplicateRecords表,然后将其BCP转换为uniquetab表。