c***c 发帖数: 6234 | 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呢?
谢谢 |
t********k 发帖数: 808 | 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)
应该可以把你的问题说的再细些 |
c***c 发帖数: 6234 | 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) : 应该可以把你的问题说的再细些
|