内部查询和连接

时间:2012-10-09 13:32:11

标签: sql join

我编写了一个查询来获取表A中的代码,该代码在表B中不是相同的ID。我在查询中硬编码了ID,我想知道如何获得所有ID的所需输出,而不仅仅是539。以下是查询

SELECT
    a.code
FROM
    A
WHERE
    a.code NOT IN(
        SELECT
            b.code
        FROM
            B b
        WHERE
           b.ID='539'
        AND b.status <> 'D')
AND 
     (a.id='539')
AND 
     (a.status <> 'D')

2 个答案:

答案 0 :(得分:2)

将表与LEFT联接一起加入,然后仅选择表B中没有相应记录的记录

SELECT a.code
FROM A
LEFT JOIN B
  ON a.ID = b.ID
  AND a.code = b.code
  AND b.status <> 'D'
WHERE a.status <> 'D'
AND b.code IS NULL

答案 1 :(得分:0)

我认为你应该能够删除你正在查询的id,你应该得到一切。

SELECT
    a.code
FROM
    A
WHERE
    a.code NOT IN(
        SELECT
        b.code
        FROM
        B b
        AND b.status <> 'D')
and AND a.status <> 'D'