我有一个表格TBL_TEST
,其中有一列NAME
有5行,这些行的值为' Balkhab',' Gosfandi',& #39; Sancharak',' Aqcha'
我想编写一个带有WHERE
子句的查询,当其中class的值与TBL_TEST
中NAME列中的一个值匹配时,它应该只显示该值,但是当它出现时不匹配然后它应该显示表中的所有值,下面是select语句,它没有按预期工作。
SELECT NAME
FROM TBL_TEST
WHERE NAME = 'Balkhab' OR NAME != 'Balkhab'
答案 0 :(得分:1)
我怀疑你想要这样的东西:
SELECT NAME
FROM TBL_TEST
WHERE NAME = 'Balkhab'
UNION ALL
SELECT NAME
FROM TBL_TEST
WHERE NOT EXISTS (SELECT 1 FROM TBL_TEST WHERE NAME = 'Balkhab');
答案 1 :(得分:1)
IF Exists(select 'X' FROM TBL_TEST WHERE NAME = 'Balkhab')
SELECT NAME from TBL_TEST WHERE NAME = 'Balkhab'
ELSE
SELECT NAME FROM TBL_TEST
答案 2 :(得分:1)
你可以在下面试试这个
select *
from table where not exists (select name from table where name = 'Aqcha') or
name ='Aqcha'
答案 3 :(得分:1)
您可以使用一个参数为其编写存储过程。
Create procedure(@Name varchar(max))
As
begin
If(Isnull(@name, 0))
Begin
If exists (select 1 from TBL_TEST xx where xx.name = @name)
Begin
Select *
From TBL_TEST
Where name = @name
End
Else
Begin
Select *
From TBL_TEST
End
End
Else
Begin
Select * from TBL_TEST
End
End
将您的名称作为参数传递给存储过程以获取require结果 存储过程是最佳选择,因为您可以避免网络流量,减少带宽,因为您只能通过需要参数并获得所需的结果