declare @x int ,@y int ,@z int
set @x=33
set @y=666
set @z=55
if @x>@y
begin
if @x>@z
print @x
else
print @z
end
else
begin
if @y>@z
print @y
else
print @z
end
第二种
declare @x int ,@y int ,@z int,@max int
set @x=33
set @y=22
set @z=20
if @x>@y
set @max =@x
else
set @max =@y
if @max >@z
set @max=@max
else
set @max =@z
print @max
❷ sql 中如何比较数据,并返回一个结果,简单语句能实现嘛,存储过程能实现嘛,详细如下
1.
1条sql语句能写,只是分支太多,语句效率估计会慢死。
(1)三表关联(新粮表,化验单,检验单,根据grainID关联),组成一个新的有别名的临时表。
(select语句) as XX
根据grainID的相同的关系,找到你要的数据,比如新粮表的grainType,检验单的 testResult等。
(2)上面的XX临时表与制度表关联(根据grainType)
按照你的说法,项目一共有,虫蚀,病斑,破碎,生芽,发霉,损伤六项,必须全部合格,才显示testResult,否则显示“某某不合格”,那么就存在一个问题,如果有两项或者三项不合格,那么是不是两项或者三项都要显示,如果这样的话,那么case when的分支就要写的非常多,是一个组合的关系,有一项不合格的有6个,有两项不合格的有15个,有三项不合格的有30个,四项15种,5项6种,6项1种,再加上合格的1种情况,加起来case when 要写1+6+15+20+15+6+1=64种情况,那么这条语句会很长,而且运行起来真的很慢。
如果只是每次找出一个就行,那么就可能会出现这次是虫蚀不合格,下次是病斑不合格这种可能,这样也不太好,个人觉得最好一次说明白。
2.存储过程怎么办
存储过程自己实现的话,那么和上面的一条语句差不多,也是比较麻烦的,毕竟他要返回所有可能的结果,然后反馈给前台,这样的话,其实和一条语句差不太多。
3.个人认为比较靠谱的办法
也是存储过程的,但是并不是用存储过程输出全部结果,只输出对比结果,比如(仅为举例)输出一个结果集(010100),那么前台就可以解读这个字符串为“病斑生芽不合格”,这样速度就会快很多。
❸ sql两个表数据比较
select count(*) from a
left outer join (select b.编号,sum(b.数量) from b group by b.编号) c on a.编号=c.编号 and a.数量>c.数量
❹ sql如何比较两个表数据是否一致
1、创建两张测试表;create table test_aa(id number);
create table test_bb(id number);
❺ 在sql中字符串怎么与数值类型比较
Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。
字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较。
Oracle在执行SQL的时候有些时候会自动转换,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是数字型的也可以查出来,但是Oracle有区分字符和数字
就是通过加不加单引号来区分。
❻ SQL如何对比两张表的数据
insert
into
tablea
select
*
from
tablea
where
not
exists
(selelct
'1'
from
tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
and
tablea.driversize
=
driversize)
update
tablea
set
tablea.driversize
=
tablea.driversize
from
tablea
,tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
如果你以tableb为准的话,你最好在tableb上加个触发器
❼ SQL中如何比对字段字中的数值
selecta.n1,b.n1
fromtabnamea,tabnameb
wherea.id=1andb.id=11
anda.n1=b.n1
selecta.n2,b.n2
fromtabnamea,tabnameb
wherea.id=1andb.id=11
anda.n2=b.n2
...
这样? 有返回值的表示值相同。
❽ sql 查询取字段值进行比较
你怎么认定
ts0004和00004
的大小,总要有个规则吧?
补充:
试试以下语句,希望能帮到你!
select
max(rigrt(字段名,5))
from
表
where
字段名
like
'%crm-[0-9][0-9][0-9][0-9][0-9]'
❾ SQL中如何进行数据的比较
是完全匹配,还是部分匹配呢?
匹配"王"字
前面匹配,select * from [a] where 姓名 like '王%'
后面匹配,select * from [a] where 姓名 like '%王'
包含匹配,select * from [a] where 姓名 like '%王%'
完全相等,select * from [a] where 姓名 = '王'