sybase临时表分页问题,union all 第二个结果集row_num始终是0,分页不正确

gelyon 2011-11-18 02:33:14

首先非常感谢大家对我上次sybase问题的回答,本人对sybase刚接触,很多不懂,请大家见谅。

现在又遇到个关于sybase临时表分页的问题,对于两个结果集union 后分页不正确。
例如:
SELECT row_num=identity(16),tmpData.* into #tmptalbe from
(
SELECT ACCOUNT_ID ,CARD_ID FROM T_ACCOUNT_CARD
UNION ALL
SELECT USER_ID,ROLE_ID FROM T_USER_ROLE
) tmpData
select * from #tmptalbe
--where row_num>=convert(int,1) and row_num<=convert(int,20)
drop table #tmptalbe


这样分页后不正确,因为union all 后面第二个结果集没有被分配row_num,始终是0,导致我分页不正确。

我尝试改写union all写法, 用full join 来实现,但是测试时才发现sybase居然不支持full join,其它oracle\db2\sqlserver都支持,我郁闷到了。。
SELECT
CASE WHEN A.ACCOUNT_ID IS NULL THEN B.USER_ID ELSE A.ACCOUNT_ID END ID1,
CASE WHEN A.CARD_ID IS NULL THEN B.ROLE_ID ELSE A.CARD_ID END ID2
FROM T_ACCOUNT_CARD A FULL JOIN T_USER_ROLE B ON 1=2

另外我也测试了用视图来做,结果也不行,视图中用UNION ALL 连接的两个结果集,第二个结果集还是没有ROW_NUM,始终为0,导致sybase临时表分页也不正确。

CREATE VIEW V_TEST AS(
SELECT ACCOUNT_ID ,CARD_ID FROM T_ACCOUNT_CARD
UNION ALL
SELECT USER_ID,ROLE_ID FROM T_USER_ROLE
)


SELECT row_num=identity(16),tmpData.* into #tmptalbe from
(
SELECT * FROM V_TEST
) tmpData
select * from #tmptalbe
--where row_num>=convert(int,1) and row_num<=convert(int,20)
drop table #tmptalbe


请问怎么来解决这个分页查询不正确问题,到底union all 后的第二个结果集为什么row_num始终是0,而不是递增的顺序值呢?


...全文
426 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gelyon 2011-11-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baiynije 的回复:]
我試的有值啊

SELECT row_num=identity(16),tmpData.* into #tmptalbe from
(
SELECT prosscode ,prossname FROM borprc where prosscode <= '020'
UNION ALL
SELECT wrcode,wrcode FROM bororg where wrcode <= '……
[/Quote]
为什么我这第二个union 的结果集ROW_NUM就全是0呢??怎么回事?谁能告诉我一下,虽然我现在没再数据库端做分页,改在应用端做查询分页了。
baiynije 2011-11-18
  • 打赏
  • 举报
回复
我試的有值啊

SELECT row_num=identity(16),tmpData.* into #tmptalbe from
(
SELECT prosscode ,prossname FROM borprc where prosscode <= '020'
UNION ALL
SELECT wrcode,wrcode FROM bororg where wrcode <= '020'
) tmpData;

select * from #tmptalbe ;


1 017 清洗
2 015 洗管
3 018 噴粉
4 020 縮口(一)
5 005 拉管
6 010 裁切
7 001 備管生產
8 015N 洗管(新)
9 010N 裁切(新)
10 012 刷毛邊
11 012N 刷毛邊(新)
12 001 001
13 010 010
内容概要:本文针对网型T型三电平逆变器的低电压穿越(LVRT)能力及其综合控制策略开展深入研究,重点分析电网电压跌落条件下逆变器的动态响应特性与稳定性控制方法。研究基于Simulink平台构建详细的系统仿真模型,融合改进的电流环控制策略与中点电位平衡控制算法,有效提升逆变器在故障工况下的电流跟踪精度、过流抑制能力和直流侧中点电压稳定性。通过多场景仿真验证,所提出的综合控制策略能够显著增强逆变器在低电压穿越过程中的鲁棒性与电能质量,确保新能源系统在电网扰动下的持续可靠并网运行。; 适合人群:电力电子、新能源发电、电力系统自动化等相关专业的研究生、科研人员及从事并网逆变器设计与控制的工程技术人员。; 使用场景及目标:①深入理解三电平逆变器在电网故障下的运行机理与控制挑战;②掌握低电压穿越技术中电流限幅、故障响应及中点电位平衡的核心控制方法;③应用于光伏、风电等新能源并网系统的控制策略开发与仿真验证; 阅读建议:建议结合提供的Simulink仿真模型进行动手实践,重点关注控制器参数设计、中点电位观测与调节模块的实现逻辑,并通过对比不同电压跌落深度和控制策略的仿真结果,深化对系统动态行为与控制性能的理解。
yolo算法港口码头船舶目标检测数据 目标类别:['ship'] 中文类别:['船舶'] 训练:16046 张 验证:1971 张 测试:983 张 总计:19000 张 该数据提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 1 names: ['ship'] 该数据聚焦于港口码头及近海水域的船舶检测任务,涵盖多种类型船舶在不同天气、光照和水文条件下的真实场景。图像样本覆盖了货轮、客轮、拖船、油轮及工程船等典型船只,充分体现了海上交通与港口作业的复杂性与多样性。通过高精度标注,该数据为海上智能监控、船舶识别与航行安全预警系统提供了高质量的数据支撑,具有重要的实际应用价值。 该数据在训练、验证和测试之间实现了科学合理的分布,训练包含16046张图像,验证1971张,测试983张,总计19000张。这种分布结构确保了模型在训练过程中具备充足的样本学习能力,同时验证与测试规模适中,能够有效评估模型的泛化性能与稳定性,符合深度学习项目对数据划分的标准要求。 该数据的标注工作严谨规范,所有船舶均采用精确边界框进行标注,覆盖了不同尺寸、姿态和视角下的目标实例。标注框紧密贴合船舶轮廓,未出现明显偏移或遗漏,且在复杂背景(如水面反光、雾天、桥梁遮挡)下仍保持高一致性。标注信息完整可靠,为后续模型训练提供了坚实基础。 该数据可广泛应用于港口自动化管理、海上交通监控、船舶动态跟踪、航道安全预警以及海洋执法等领域。其丰富的场景覆盖和多样化的船舶类型使其特别适用于智慧港口建设、海上搜救系统开发及航运物流智能化升级,能够有效提升相关系统的识别准确率与响应效率,推动海洋经济数字化转型。

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧