Redian新闻
>
需要帮助 -- Oracle Query
avatar
需要帮助 -- Oracle Query# Database - 数据库
c*c
1
我有两个tables,incidents 和 ConfigurationItems
每个incident都必须有Configuration Item。
但一些Apps把错误的Configuration Item名字放到incident里了。大概400W个incident
,15000个Configuration Items。
我怎么能用最有效的query把所有有无效的Configuration Item incident query 出来
呢?
select incident_id from incidents
where ci_name not in (select ci_name from configurationitems)
怎么return 0 row
有没有更有效的query呢?
谢谢
avatar
t*k
2
首先你要弄清楚,你的那些错误的Configuration Item在不在表configurationitems里
?如果都在这个表里,你用not in,肯定是找不到数据的
如果说不在表configurationitems里的就是错误的Configuration Item,那你的SQL语
句是对地
select incident_id from incidents
where ci_name not in (select ci_name from configurationitems)
应该可以把你的问题说的再细些
avatar
c*c
3
谢谢回复。
那些错误的CI确实不在ci table里。但按你的query,确实返回0 row呀。
我用了笨办法
select i.incident_id, i.ci_name, ci.ci_name
from incidents i, configuration_items ci
where ci.ci_name (+)= i.ci_name
and ci.ci_name is null

【在 t********k 的大作中提到】
: 首先你要弄清楚,你的那些错误的Configuration Item在不在表configurationitems里
: ?如果都在这个表里,你用not in,肯定是找不到数据的
: 如果说不在表configurationitems里的就是错误的Configuration Item,那你的SQL语
: 句是对地
: select incident_id from incidents
: where ci_name not in (select ci_name from configurationitems)
: 应该可以把你的问题说的再细些

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。