SQL伪查询

时间:2017-06-01 20:42:44

标签: sql

三个数据表A,B和C. A和B共享一个公共变量ID1。 B和C共享公共变量ID2。 编写一个伪查询来获得此结果:从表B中选择所有内容,在表A和表B中都匹配记录,但不在表C中。

我是sql的新手,我非常感谢帮助

1 个答案:

答案 0 :(得分:-1)

我们无法为您完成作业,但这里有一些学习方向:表A和表B将与ID1列上的基本内部联接相结合。

如果表C中存在A和B的结果,那么更为棘手的部分。为此,您可以执行外连接,并添加where子句以查找表C的空值。这是因为当您执行外连接(对于此示例,我们将使用外连接),它将从左表中提取所有相应的记录,然后尝试以提取匹配右表中的记录。但是如果右表中没有记录,那么它将返回一个带有“null”值的记录。

您的查询将是:

SELECT
    table_b.* -- "select all from table B"
FROM
    table_a INNER JOIN table_b ON (table_a.ID1 = table_b.ID1) -- "matching records in A and B"
    LEFT OUTER JOIN table_c ON (table_b.ID2 = table_c.ID2) -- Bring in table C to let us check if B's rows exist in C
WHERE
    table_c.ID2 IS NULL -- Only display records that don't have a corresponding C record

“选择B而不是C中的记录”的关键是理解外连接。