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

我知道这个查询是不对的,但我的主要问题是我在测试表中的 deviceid 我必须在这个查询中排除所有那些 deviceid。那么我们可以在“<>”条件中放置多个值吗?或者任何其他方式正在从这个查询输出中排除我所有的带有测试表的 deviceid 值。请帮我 。提前致谢。

4

3 回答 3

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
    )
于 2013-08-12T09:45:49.847 回答
0
AND D.deviceid NOT IN( SELECT deviceid from test)
于 2013-08-12T09:37:34.793 回答
0

与 SQL 中的许多事情一样,有很多方法可以做到这一点 -LEFT OUTER JOIN使用 NULL 检查、NOT IN语句或NOT EXISTS.

哪个效果最好取决于情况和用户 - 这是 NOT EXISTS 选项的示例:

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

NOT IN 选择:

AND d.deviceid NOT IN (SELECT DeviceID 
                       FROM Test)
于 2013-08-12T09:34:25.940 回答