针对多个表构造此SQL查询的正确方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了针对多个表构造此SQL查询的正确方法相关的知识,希望对你有一定的参考价值。

我有一个使用Microsoft Office单点登录的javascript webapp的问题。由于某种原因,我还没有发现,用户正在我的数据库中重复。在我开始排除故障之前,我想尝试清理数据库。

我想搜索Employee表中的任何用户,他们在任何建议表中都没有任何建议。因此,我没有提出任何建议,具有重复帐户的用户列表,我可以删除。最好的方法是什么?

另请注意瑞克(ID 6和7)根本没有任何贡献。删除这两个帐户都会有问题。

雇员

ID    name    hair
--------------------
1     bob     brown
2     jeff    blond
3     jeff    brown
4     steve   none
5     steve   none
6     rick    red
7     rick    red

suggestions_lunch

ID    suggestion        status
---------------------------------
2     free food         planned
3     warmer coffee     declined

suggestions_pay

ID    suggestion            status
----------------------------------------------
5     We pay bob too much   investigating

这里,ID 4将被删除。我想我需要第二个SQL查询,显示所有拥有多个帐户但没有任何贡献的用户。

SELECT * 
FROM employee 
WHERE ...
答案

检查“建议”列中的空建议值是否存在或不存在的简单方法是检查是否为null

    SELECT e.name
          ,sl.suggestion
    FROM Employee e
    JOIN suggestion_lunch sl ON sl.ID = e.ID
    WHERE suggestion IS NULL;

这是你想要做的好开始。它将从employee表中选择名称,并从suggestion_lunch表中选择建议。

在选择名称和建议之后,我们在建议午餐ID =雇员ID的基础上加入他们

最后,我们使用WHERE来检查空值。想象一下,当我们运行没有WHERE子句的查询时......我们会找回一个包含所有员工姓名和建议的表。要仅显示没有建议的用户,我们利用IS NULL子句,因为当没有建议时,表值将为NULL。

至于删除重复项,我建议使用GO加入单独的查询

以上是关于针对多个表构造此SQL查询的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

带有 INNER JOIN 和 WHERE 的 SQL 查询

Microsoft SQL Server 代码片段收集

如何针对 db2 数据库优化 SQL/Python 选择查询?

具有多个条件的 SQL 查询不起作用

参数化的 SQL 列?

如何使用 SQL 中的 Case 语句将数据插入临时表