2013-02-14 58 views
0

首先,這是什麼樣的表是這樣的:選擇從表中的非唯一的字段,其中數據不包含字符串

Checkpoint 
========== 
trans_id 
checkpoint_id 

Checkpoint_Data 
=============== 
checkpoint_id 
data 

trans_id不是checkpoint獨特。 checkpoint_id對於checkpoint以及checkpoint_data是唯一的。 Checkpoint_id鏈接checkpointcheckpoint_data

我想所有的trans_idcheckpoint選擇從何處的checkpoint_data相關data不包含一些字符串。

我基本上要反轉這種說法:

SELECT ch.trans_id 
FROM checkpoint ch, 
     checkpoint_data chd 
WHERE ch.checkpoint_id = chd.checkpoint_id 
    AND Upper(chd.data)LIKE Upper('%Example String%') 

一個簡單的不喜歡沒有工作。

+0

。 TRY'Upper(chd.data)NOT LIKE Upper('%Example String%')' – 2013-02-14 16:13:41

+0

使用NOT不起作用。 trans_id將幾個檢查點和數據鏈接在一起。即使檢查點沒有「示例字符串」,它也很有可能是其他檢查點中的一個,並且該trans_id仍將由選擇返回 – user906153 2013-02-14 16:18:07

回答

1

或這樣的事情...

SELECT ch.trans_id 
FROM checkpoint ch 
except 
SELECT ch.trans_id 
FROM checkpoint ch, 
    checkpoint_data chd 
WHERE ch.checkpoint_id = chd.checkpoint_id 
AND Upper(chd.data)LIKE Upper('%Example String%') 
你想`不LIKE`,但使用的是`LIKE`
+0

我收到錯誤當我嘗試運行這個。 「ORA-00933:SQL命令未正確結束」當我直接運行它時,「ORA-00907:缺少右括號」當我通過JDBC驅動程序運行時 – user906153 2013-02-14 16:46:55

+0

@ user906153:在Oracle中使用MINUS而不是EXCEPT(SQL SERVER語法) – 2013-02-14 16:50:46

+0

ty @Gaurav ...抱歉,user906153 ..沒有看到oracle標記,並且爲sql服務器寫過 – Frederic 2013-02-14 16:55:34

0

這樣的事情?

SELECT ch.trans_id 
FROM checkpoint ch 
WHERE not exists (select * from checkpoint_data chd 
        where ch.checkpoint_id = chd.checkpoint_id 
        AND Upper(chd.data) LIKE Upper('%Example String%') 
       ) 
+0

這不會返回所需的結果,不幸的是 – user906153 2013-02-14 16:57:27

相關問題