查询语句:
select * from (
select t_album_page.*, ROWNUM rn from (
select t_album_final.* from V_ALBUM t_album_final where t_album_final.ID in(
select distinct ID from (
select t_album.* from V_ALBUM t_album
left join V_KEYWORDS t_keywords on t_album.ID = t_keywords.ALBUMID
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84')
)
) order by DECADE desc
) t_album_page
) where rn >= 1 and rn <= 2147483647
以上语句结果某些该有值的字段变成了空,但直接执行内层的子查询没问题。
更奇怪的是下面的语句没问题,只是内层多了join语句。
select * from (
select t_album_page.*, ROWNUM rn from (
select t_album_final.* from V_ALBUM t_album_final where t_album_final.ID in (
select distinct ID from (
select t_album.* from V_ALBUM t_album
left join V_KEYWORDS t_keywords on t_album.ID = t_keywords.ALBUMID
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84') and ( t_album.TITLE in ( '321','魔戒三(王者归来)','魔戒一(双塔)') or t_keywords.KEYWORD in ( '321') )
)
) order by DECADE desc
) t_album_page
) where rn >= 1 and rn <= 2147483647
10 个解决方案
#1
2个语句条件不一样
#2
不是条件的问题,试过了
#3
这语句。。。。。估计效率慢死了
#4
数据量很小,不必考虑性能
#5
去掉这个限制条件
where rn >= 1 and rn <= 2147483647
where rn >= 1 and rn <= 2147483647
#6
没看出什么问题,你内层子查询采用左连接,全是表V_ALBUM中的记录中的ID,具体不清楚你所谓的空值是什么样的
不知道是不是你这个条件造成的t_keywords.KEYWORD in ( '321') ,试试在第二个SQL中去掉该条件呢
另外,你数据量很小,没必要加这个条件where rn >= 1 and rn <= 2147483647
不知道是不是你这个条件造成的t_keywords.KEYWORD in ( '321') ,试试在第二个SQL中去掉该条件呢
另外,你数据量很小,没必要加这个条件where rn >= 1 and rn <= 2147483647
#7
空值 是说结果中大部分应该有值的字段都变成了空
#8
不好意思,有问题的语句应该是下面的,开始的帖子贴错了
select * from (
select t_album_page.*, ROWNUM rn from (
select t_album_final.* from V_ALBUM t_album_final where t_album_final.ID in(
select distinct ID from (
select t_album.* from V_ALBUM t_album
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84')
)
) order by DECADE desc
) t_album_page
) where rn >= 1 and rn <= 2147483647
select * from (
select t_album_page.*, ROWNUM rn from (
select t_album_final.* from V_ALBUM t_album_final where t_album_final.ID in(
select distinct ID from (
select t_album.* from V_ALBUM t_album
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84')
)
) order by DECADE desc
) t_album_page
) where rn >= 1 and rn <= 2147483647
#9
--下面的语句的条件又不一样怎么能比
--再说看你的语句真的很冗余 整个写的这么多 你的内层查询就是你的结果 还嵌套 去重复 在查询 不想说了
--直接这样
select t.*
from (select t_album.*,row_number() over(order by DECADE desc) rn
from V_ALBUM t_album
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84')) t
where t.rn<=2147483647
#10
这个语句绕来绕去,好像除了里面的那一层,外面接着的几层最终查到的还不是第一层的数据?
#1
2个语句条件不一样
#2
不是条件的问题,试过了
#3
这语句。。。。。估计效率慢死了
#4
数据量很小,不必考虑性能
#5
去掉这个限制条件
where rn >= 1 and rn <= 2147483647
where rn >= 1 and rn <= 2147483647
#6
没看出什么问题,你内层子查询采用左连接,全是表V_ALBUM中的记录中的ID,具体不清楚你所谓的空值是什么样的
不知道是不是你这个条件造成的t_keywords.KEYWORD in ( '321') ,试试在第二个SQL中去掉该条件呢
另外,你数据量很小,没必要加这个条件where rn >= 1 and rn <= 2147483647
不知道是不是你这个条件造成的t_keywords.KEYWORD in ( '321') ,试试在第二个SQL中去掉该条件呢
另外,你数据量很小,没必要加这个条件where rn >= 1 and rn <= 2147483647
#7
空值 是说结果中大部分应该有值的字段都变成了空
#8
不好意思,有问题的语句应该是下面的,开始的帖子贴错了
select * from (
select t_album_page.*, ROWNUM rn from (
select t_album_final.* from V_ALBUM t_album_final where t_album_final.ID in(
select distinct ID from (
select t_album.* from V_ALBUM t_album
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84')
)
) order by DECADE desc
) t_album_page
) where rn >= 1 and rn <= 2147483647
select * from (
select t_album_page.*, ROWNUM rn from (
select t_album_final.* from V_ALBUM t_album_final where t_album_final.ID in(
select distinct ID from (
select t_album.* from V_ALBUM t_album
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84')
)
) order by DECADE desc
) t_album_page
) where rn >= 1 and rn <= 2147483647
#9
--下面的语句的条件又不一样怎么能比
--再说看你的语句真的很冗余 整个写的这么多 你的内层查询就是你的结果 还嵌套 去重复 在查询 不想说了
--直接这样
select t.*
from (select t_album.*,row_number() over(order by DECADE desc) rn
from V_ALBUM t_album
where PARENT_ALBUM_ID is null and ALBUM_STATUS = 3 and t_album.COLUMN_CODE in ( '679a35bff1d34ccbacea86119bbe2bd7','ef2714538c284cb181d86d0a40d5e119','d1986d9e748c4579a0572b2c51dba1c4','a8c6572924aa4480ae5c40b5dd3a8a84')) t
where t.rn<=2147483647
#10
这个语句绕来绕去,好像除了里面的那一层,外面接着的几层最终查到的还不是第一层的数据?