针对多个表构造此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 查询