ORDER BY会影响查询结果?

Amphetamine 2014-12-25 03:04:06
ORACLE版本10G
有个项目,有表table1,表结构:
CREATE TABLE TABLE1
(
TID VARCHAR2(50 BYTE),
ITEM_ID VARCHAR2(50 BYTE),
QTY NUMBER
)

统计数据时用到以下SQL语句查询:
SELECT tid,
SUM (CASE
WHEN item_id = 'A1'
THEN qty
ELSE NULL
END) qty01,
SUM (CASE
WHEN item_id = 'A2'
THEN qty
ELSE NULL
END) qty02,
SUM (CASE
WHEN item_id = 'A3'
THEN qty
ELSE NULL
END) qty03,
SUM (CASE
WHEN item_id = 'A4'
THEN qty
ELSE NULL
END) qty04,
..............
SUM (CASE
WHEN item_id = 'A50'
THEN qty
ELSE NULL
END) qty50
FROM table1
GROUP BY tid


查询结果中,有一行:
TID,QTY01,QTY02,QTY03,QTY04,QTY05,QTY06,QTY07,QTY08,QTY09,QTY10,QTY11,QTY12,QTY13,QTY14,QTY15,QTY16,QTY17,QTY18,QTY19,QTY20,QTY21,QTY22,QTY23,QTY24,QTY25,QTY26,QTY27,QTY28,QTY29,QTY30,QTY31,QTY32,QTY33,QTY34,QTY35,QTY36,QTY37,QTY38,QTY39,QTY40,QTY41,QTY42,QTY43,QTY44,QTY45,QTY46,QTY47,QTY48,QTY49,QTY50
40772990,52,,,6,,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
就是只有3个值。
但是表里这个tid有十几个值来着。。

把SQL改为:
SELECT tid,
SUM (CASE
WHEN item_id = 'A1'
THEN qty
ELSE NULL
END) qty01,
SUM (CASE
WHEN item_id = 'A2'
THEN qty
ELSE NULL
END) qty02,
SUM (CASE
WHEN item_id = 'A3'
THEN qty
ELSE NULL
END) qty03,
SUM (CASE
WHEN item_id = 'A4'
THEN qty
ELSE NULL
END) qty04,
..............
SUM (CASE
WHEN item_id = 'A50'
THEN qty
ELSE NULL
END) qty50
FROM table1
GROUP BY tid
ORDER BY tid

只是加了个ORDER BY tid
查询结果中该行就变成:
TID,QTY01,QTY02,QTY03,QTY04,QTY05,QTY06,QTY07,QTY08,QTY09,QTY10,QTY11,QTY12,QTY13,QTY14,QTY15,QTY16,QTY17,QTY18,QTY19,QTY20,QTY21,QTY22,QTY23,QTY24,QTY25,QTY26,QTY27,QTY28,QTY29,QTY30,QTY31,QTY32,QTY33,QTY34,QTY35,QTY36,QTY37,QTY38,QTY39,QTY40,QTY41,QTY42,QTY43,QTY44,QTY45,QTY46,QTY47,QTY48,QTY49,QTY50
40772990,52,,,6,,20,,,,,,,,,124,610,,64,,396,,255,,1125,,,,,,,,100,,,,,116,100,24,,,,,300,,60,,,,2708

而其他行不论用哪个查询语句都全部正常。。

这可能是什么原因导致的?
...全文
357 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amphetamine 2014-12-26
  • 打赏
  • 举报
回复
引用 10 楼 anhy 的回复:
有没有qty为空的数据
40772990没有QTY为空的数据。 整个表中有29条早期数据QTY为空,都不在这次查询的范围内
anhy 2014-12-26
  • 打赏
  • 举报
回复
有没有qty为空的数据
Amphetamine 2014-12-26
  • 打赏
  • 举报
回复
引用 6 楼 wmxcn2000 的回复:
LZ 如果你的数据不涉密的话,可以把数据帖上来,有点怪。
不太涉密,就是量太大。 涉及数据有79W行 如果缩小查询范围,比如只查40772990这个TID的,又没问题了
Amphetamine 2014-12-26
  • 打赏
  • 举报
回复
引用 5 楼 anhy 的回复:
TID为40772990的有没有item_id重复的数据?
有重复的
Amphetamine 2014-12-26
  • 打赏
  • 举报
回复
引用 4 楼 wildwave 的回复:
tid是字符型的。检查下两个40772990是否是同一个,还是其中一个包含了空格之类的字符 select tid,count(1) from table1 where tid like '%40772990%' group by tid;
TID,COUNT(1) 40772990,23 没有包含空格的
anhy 2014-12-25
  • 打赏
  • 举报
回复
TID为40772990的有没有item_id重复的数据?
小灰狼W 2014-12-25
  • 打赏
  • 举报
回复
tid是字符型的。检查下两个40772990是否是同一个,还是其中一个包含了空格之类的字符 select tid,count(1) from table1 where tid like '%40772990%' group by tid;
Amphetamine 2014-12-25
  • 打赏
  • 举报
回复
去掉QTY01的查询后,不用ORDER BY,40772990的查询结果只剩下QTY39的24 去掉QTY50的查询后,不用ORDER BY,40772990的查询前10消失,QTY15及之后的数据除了QTY50全部有了。 这。。我。。
Amphetamine 2014-12-25
  • 打赏
  • 举报
回复
没有未提交的事务。。
bw555 2014-12-25
  • 打赏
  • 举报
回复
这不科学,order只会影响查询的结果集的顺序,不可能对结果集有啥影响的 是不是开始查询的时候有数据还未提交?
卖水果的net 2014-12-25
  • 打赏
  • 举报
回复
LZ 如果你的数据不涉密的话,可以把数据帖上来,有点怪。

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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