Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:在嵌套查询中使用AND语句_Sql_Sql Server_Nested Queries_Nested Query_And Operator - Fatal编程技术网

SQL:在嵌套查询中使用AND语句

SQL:在嵌套查询中使用AND语句,sql,sql-server,nested-queries,nested-query,and-operator,Sql,Sql Server,Nested Queries,Nested Query,And Operator,我正在学习一个在线教程系列,现在我们正在研究嵌套查询。我想尝试使用这个概念进行组合嵌套查询,但我不确定如何实现,谷歌也没有给我带来多少运气。再一次,很难说出这样的话。我正在使用MS SQL SELECT EmployeeID, FirstName, LastName FROM SQLTutorial.dbo.EmployeeDemographics WHERE EmployeeID IN (SELECT EmployeeID FROM SQLTutorial.dbo.EmployeeSala

我正在学习一个在线教程系列,现在我们正在研究嵌套查询。我想尝试使用这个概念进行组合嵌套查询,但我不确定如何实现,谷歌也没有给我带来多少运气。再一次,很难说出这样的话。我正在使用MS SQL

SELECT EmployeeID, FirstName, LastName
FROM SQLTutorial.dbo.EmployeeDemographics 

WHERE EmployeeID
IN (SELECT EmployeeID
FROM SQLTutorial.dbo.EmployeeSalary
WHERE JobTitle = 'DBA')

/*
AND 

WHERE EmployeeID 
IN (SELECT EmployeeID
FROM SQLTutorial.dbo.WareHouseEmployeeDemographics
WHERE Age = 29)
*/
这就是我想我能做的。从这个例子中,我知道未注释的部分是有效的。如果ID在EDemo和ESalary中,并且他们的职务是DBA,则它从EDemo获取ID、名字和姓氏

我想进一步限制这些结果,只让结果是那些在仓库工作的29岁的人

 SELECT EmployeeID, FirstName, LastName
    FROM SQLTutorial.dbo.EmployeeDemographics 
    
    WHERE EmployeeID
    IN (SELECT EmployeeID
    FROM SQLTutorial.dbo.EmployeeSalary
    WHERE JobTitle = 'DBA')
    
    or EmployeeID 
    IN (SELECT EmployeeID
    FROM SQLTutorial.dbo.WareHouseEmployeeDemographics
    WHERE Age = 29)
我的意思是,如果我在没有未注释代码的情况下运行注释代码,它也会像预期的那样工作,但我不确定为什么不能将两者结合起来。我90%确定这是b/c,我不能像这样使用AND语句,我有一种潜移默化的感觉,我必须把这两个嵌套在一起,在一个嵌套中筑巢


这就像是一个塔可里面的塔可里面的塔可钟里面的肯德基里面的商场里面的塔可钟里面的你的梦想!很抱歉,我无法控制自己。

正如评论中所指出的,问题是有两个
,其中
s。仅第一个
,其中需要
;在指定了
WHERE
之后,可以使用AND或类似的东西连接条件。取消注释并删除第二个
,其中
应该可以修复它。因此,不用“WHERE a=b和WHERE c=d”,只需写“WHERE a=b和c=d”。

只需删除第二个“WHERE”,您的查询就可以执行了。您只需要一个where子句,在该子句中,您可以将所有条件与and、or等组合起来

SELECT EmployeeID, FirstName, LastName
FROM SQLTutorial.dbo.EmployeeDemographics 

WHERE EmployeeID
IN (SELECT EmployeeID
FROM SQLTutorial.dbo.EmployeeSalary
WHERE JobTitle = 'DBA')

AND EmployeeID 
IN (SELECT EmployeeID
FROM SQLTutorial.dbo.WareHouseEmployeeDemographics
WHERE Age = 29)
如果您想要所有ID为EDemo和ESalary且职务为DBA但在仓库工作且年龄为29岁的员工

 SELECT EmployeeID, FirstName, LastName
    FROM SQLTutorial.dbo.EmployeeDemographics 
    
    WHERE EmployeeID
    IN (SELECT EmployeeID
    FROM SQLTutorial.dbo.EmployeeSalary
    WHERE JobTitle = 'DBA')
    
    or EmployeeID 
    IN (SELECT EmployeeID
    FROM SQLTutorial.dbo.WareHouseEmployeeDemographics
    WHERE Age = 29)

都可以<代码>和
不在的地方。编辑:我知道我可以使用Join语句,但这里的目标是了解更多有关嵌套查询的信息。伙计,谢谢!我知道这很简单。正如我所说的,我仍在学习,要从sql的常规编码惯例中找到正确的思维方式有点困难。我真的很感谢你们的洞察力。如果我真的在网站和谷歌上找不到这些问题,我希望我的简单问题不会成为麻烦。这不是我的目标吗?一起学习。祝您一切顺利,您一定会喜欢使用sql。谢谢。我认为下面的链接会引起您的兴趣: