2013-08-12 20 views
1

我有一個表測試在那個deviceid列在那裏。如何把更多的價值不等於條件

和我的查詢是這樣的

SELECT s.group_id, 
     s.group_name, 
     da.deviceid, 
     da.digitaladdress, 
     da.status, 
     dt.digitaladdressdesc, 
     dt.address_enable 
FROM OACT_TBL_DEVICES d, 
     OMM_TBL_ACCOUNT_GROUPS g, 
     OMM_TBL_GROUPS s, 
     OACT_TBL_DIGITAL_ADDRESSES da, 
     OACT_TBL_DIGITAL_ADDRESS_TYPE dt, 
     test t 
WHERE s.group_id = '1' 
     AND s.group_id = g.group_id 
     AND g.accountid = d.accountid 
     AND d.deviceid = da.deviceid 
     AND d.deviceid <> t.DeviceId 
     AND s.GROUP_NAME = t.GroupName 
     AND da.digitaladdresstype = dt.digitaladdresstype 

我知道這個查詢是不對的,但我的主要問題是,設備ID我在測試表我必須排除在此查詢所有這些設備ID .. 那麼我們可以在'<>'條件下放置多個值嗎? 或者任何其他方式正在從此查詢輸出中排除我的所有deviceid值與測試表。 請幫幫我。 在此先感謝。

回答

0

與SQL中的很多事情一樣,有很多方法可以做到這一點 - LEFT OUTER JOIN帶有NULL檢查,NOT IN語句或NOT EXISTS

哪個效果最好的情況和用戶依賴 - 在這裏是爲不舉例EXISTS選項:

AND NOT EXISTS (SELECT NULL 
       FROM test 
       WHERE test.DeviceID = d.DeviceID) 

的NOT IN的選擇:

AND d.deviceid NOT IN (SELECT DeviceID 
         FROM Test) 
0
AND D.deviceid NOT IN(SELECT deviceid from test) 
0

嘗試這一個 -

SELECT 
     s.group_id 
    , s.group_name 
    , da.deviceid 
    , da.digitaladdress 
    , da.[status] 
    , dt.digitaladdressdesc 
    , dt.address_enable 
FROM dbo.OACT_TBL_DEVICES d 
JOIN dbo.OMM_TBL_ACCOUNT_GROUPS g ON g.accountid = d.accountid 
JOIN dbo.OMM_TBL_GROUPS s ON s.group_id = g.group_id 
JOIN dbo.OACT_TBL_DIGITAL_ADDRESSES da ON d.deviceid = da.deviceid 
JOIN dbo.OACT_TBL_DIGITAL_ADDRESS_TYPE dt ON da.digitaladdresstype = dt.digitaladdresstype 
WHERE s.group_id = '1' 
    AND NOT EXISTS (
     SELECT 1 
     FROM dbo.test t 
     WHERE t.deviceid = d.deviceid 
    ) 
+0

Thanx every one..Your all suggestion real我幫了我很多,我有想法解決我的問題。 –

+0

不客氣@Dharmveer庫馬爾 – Devart