2014-07-24 47 views
0
select id from license where not exists(
    select a.id from license a,version b, mediapart c where 
    c.version_id = b.id and b.cntnt_id = a.cntnt_id and c.is_highdef=1); 

此查詢不給出結果集中的任何行。即使在外部許可證表和內部許可證表中使用不同的別名。NOT EXISTS查詢在Informix上不起作用,而NOT IN作品中的查詢不起作用

然而,這一個使用NOT IN正常工作:

select id from license where id not in(
    select a.id from license a,version b, mediapart c where 
    c.version_id = b.id and b.cntnt_id = a.cntnt_id and c.is_highdef=1); 

我如何能實現與NOT EXISTS類似的查詢有什麼建議?

這是一個土生土長的框架,我必須在實現這一目標,這將是不可能的編寫一個查詢這就好比以下

select id from license a where not exists(
select a.id from version b, mediapart c where 
c.version_id = b.id and b.cntnt_id = a.cntnt_id and c.is_highdef=1); 

上面的查詢工作,但與我使用的框架,我將不得不在內部查詢中使用全部三個表名和別名。

回答

1

NOT EXISTS查詢是相關的,但NOT IN不是。換句話說,後一版本中子查詢的結果與主查詢的結果無關。

我懷疑licenseversionmediapart中沒有子女的記錄,所以它們不在相關版本的查詢中。

不知道更多關於數據設計,我建議你可能需要看看使用OUTER JOIN來確保你得到所有的license記錄。