我试图从表中检索唯一的记录,但我想我的查询有问题。
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
请高度赞赏任何帮助。
由于
答案 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表。