Sql 如何检查表是否包含不同的值?
我有一张桌子:Sql 如何检查表是否包含不同的值?,sql,tsql,Sql,Tsql,我有一张桌子: Id Value 1 79868 2 79868 3 79868 4 97889 5 97889 现在,我想用bool变量进行下一次选择,该变量检查表的列值是否包含difrent值。大概是这样的: select v= (select case when exists(...) then 1 else 0 end) 表cont
Id Value
1 79868
2 79868
3 79868
4 97889
5 97889
现在,我想用bool变量进行下一次选择,该变量检查表的列值是否包含difrent值。大概是这样的:
select
v= (select case when exists(...)
then 1
else 0
end)
表contais值:7986897889,因此在其他情况下v应返回1 0。
如何在侧选择框中写入选择???您可以比较最小值和最大值:
select (case when (select min(value) from t) = (select max(value) from t)
then 1 else 0
end) as all_same
对于值的索引,这应该非常快
上述解决方案假定不存在空值或应忽略空值。您可以比较最小值和最大值:
select (case when (select min(value) from t) = (select max(value) from t)
then 1 else 0
end) as all_same
对于值的索引,这应该非常快
上述解决方案假定不存在空值或应忽略空值。您可以尝试以下方法:
SELECT CASE COUNT(*)
WHEN 1 THEN 1
ELSE 0
END AS all_equal
FROM (SELECT DISTINCT Value FROM my_table);
你可以试试这个:
SELECT CASE COUNT(*)
WHEN 1 THEN 1
ELSE 0
END AS all_equal
FROM (SELECT DISTINCT Value FROM my_table);
所以,您只需要一个带有两个布尔变量的case表达式
declare @bit1 bit = 1, @bit0 bit = 0
select
(case when min(value) = max(value) then @bit1 else @bit0 end) as v
from table t
where value is not null
所以,您只需要一个带有两个布尔变量的case表达式
declare @bit1 bit = 1, @bit0 bit = 0
select
(case when min(value) = max(value) then @bit1 else @bit0 end) as v
from table t
where value is not null
如果我答对了您的问题,您需要检查value列是否包含超过1个不同的值。你可以使用
select (case when count(value) > 1 then 1 else 0 end) as out
from (select value from table group by value) temp
如果我答对了您的问题,您需要检查value列是否包含超过1个不同的值。你可以使用
select (case when count(value) > 1 then 1 else 0 end) as out
from (select value from table group by value) temp
但愿这样更好:
SELECT CASE COUNT(DISTINCT value) WHEN 1 THEN 1
ELSE 0
END AS all_equal
FROM my_table;
但愿这样更好:
SELECT CASE COUNT(DISTINCT value) WHEN 1 THEN 1
ELSE 0
END AS all_equal
FROM my_table;
这是一个与另一个答案相同的问题 但是它有一些测试数据
declare @T table(pk int identity primary key, val int not null);
insert into @T (val) values (79868), (79868), (79868);
select case when count(distinct(val)) = 1 then 0 else 1 end as dd
from @t t;
select case when min(val) = max(val) then 0 else 1 end as dd
from @t t;
insert into @T (val) values (97889), (97889);
select case when count(distinct(val)) = 1 then 0 else 1 end as dd
from @t t;
select case when min(val) = max(val) then 0 else 1 end as dd
from @t t;
我喜欢Gordon best的min-max答案这是一个与另一个答案相同的答案 但是它有一些测试数据
declare @T table(pk int identity primary key, val int not null);
insert into @T (val) values (79868), (79868), (79868);
select case when count(distinct(val)) = 1 then 0 else 1 end as dd
from @t t;
select case when min(val) = max(val) then 0 else 1 end as dd
from @t t;
insert into @T (val) values (97889), (97889);
select case when count(distinct(val)) = 1 then 0 else 1 end as dd
from @t t;
select case when min(val) = max(val) then 0 else 1 end as dd
from @t t;
我喜欢Gordon best的min-max回答,即使有空值也有效。即使有空值也有效。您希望如何处理空值?如何处理空值?即使有空值也有效。即使有空值也有效。假设没有空值。假设没有空值。假设没有空值。假设没有空值。假设有空值没有空值。