以下是我的查询
select * from tbl_incometax_master where (select Slabtitle=Gender,SlabSubTitle=Senior_CTZN_Type FROM etds.dbo.tbl_Employee_Master WHERE employee_id = 1218 AND company_id = 1987)
当尝试在sql server 2008 r2中执行以下错误时: Msg 4145,Level 15,State 1,Line 2 在预期条件的上下文中指定的非布尔类型的表达式,接近'。'。
答案 0 :(得分:1)
在父查询的where子句中没有任何列,重要的是要知道只能使用子查询定义列标准。
示例查询...
select * from tbl_incometax_master where <column> (select <subquery column> FROM etds.dbo.tbl_Employee_Master WHERE employee_id = 1218 AND company_id = 1987)
答案 1 :(得分:0)
也许这就是你打算做的事情(使用EXISTS
):
select *
from tbl_incometax_master
where exists (
select 1
from etds.dbo.tbl_Employee_Master
where employee_id = 1218
and company_id = 1987
and Slabtitle = Gender
and SlabSubTitle = Senior_CTZN_Type
)
它是一个相关的子查询,外部查询检查当前行的子查询中是否至少存在一行。
答案 2 :(得分:0)
你的Where with no operator(=,&lt;,&gt;,IN)中有一个select子句!并且在选择内部'='! 它们都不允许在SQL查询中使用。
答案 3 :(得分:0)
select * from tbl_incometax_master table1 LEFT JOIN
(
select Gender,Senior_CTZN_Type FROM etds.dbo.tbl_Employee_Master WHERE employee_id = 1218 AND company_id = 1987
) table2
ON
table1.Slabtitle=table2.Gender
AND table1.SlabSubTitle=table2.Senior_CTZN_Type
WHERE table2.Slabtitle IS NOT NULL