如何正确编写:
declare @p7_ int
set @p7_=1
select * from cdn.tranag
where
case when @p7_=1 then
exists(select * from cdn.zrodla join cdn.dziennik on dzk_gidnumer=zro_dtnumer where TrN_GIDTyp=zro_trntyp and TrN_GIDNumer=zro_trnnumer)
else -1 end
感谢。
答案 0 :(得分:0)
SQL中的where
子句需要将某些内容与其他内容进行比较。看起来你只是想说'#34;带回一切,除非@p7_
的值为1
,在这种情况下检查记录是否存在于别处。"
您可以使用and
子句中的or
和where
等简单逻辑运算符来实现此目的:
select columns
from table
where @p7_ <> 1
or (@p7_ = 1
and exists(<exists statement>)
)
答案 1 :(得分:0)
这可以通过AND/OR
逻辑来实现。
您正在寻找此
SELECT *
FROM cdn.Tranag
WHERE ( @p7_ = 1
AND EXISTS(SELECT *
FROM cdn.zrodla
JOIN cdn.dziennik
ON dzk_gidnumer = zro_dtnumer
WHERE TrN_GIDTyp = zro_trntyp
AND TrN_GIDNumer = zro_trnnumer) )
OR @p7_ = 0
答案 2 :(得分:0)
我认为这就是你想要的:
select *
from cdn.tranag t
where (@p7_= 1 and
exists (select 1
from cdn.zrodla join
cdn.dziennik
on dzk_gidnumer = zro_dtnumer
where t.TrN_GIDTyp = zro_trntyp and
t.TrN_GIDNumer = zro_trnnumer
)
) or
(@p7_ <> 1);
这实现了如果@p7_ = 1
,则检查exists
子句的逻辑。否则,选择所有行。注意:这不会检查NULL
,但这很容易添加。
另外,请注意表别名的使用。您应该始终使用表别名,尤其是在使用子查询时,尤其是当您有多个表时。
答案 3 :(得分:0)
一些侧面信息:
在T-Sql中,window.onclick = function (event) {
if (!event.target.matches('.immune-nav-close')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
$('.ddown-nav').collapse('hide')
}
}
是一个带有EXISTS
结果的布尔表达式。然而,与许多其他语言不同,true/false
&#34;值&#34;在T-Sql中,不要映射到整数值。换句话说,您永远不能将T-Sql 布尔表达式结果视为true/false
值。它们只能用于bool子句,例如INT
,WHERE ...
,JOIN ON ...
和IF ...
。