SQL中的排序匹配
我有一个SQL存储过程,它将name和phone作为输入参数,将returnid作为输出参数。若在姓名上找到匹配项,我想返回ID,但若在电话上找不到匹配项,则返回ID。如果我使用OR语句,它将返回两个id,但我只需要返回一个idSQL中的排序匹配,sql,Sql,我有一个SQL存储过程,它将name和phone作为输入参数,将returnid作为输出参数。若在姓名上找到匹配项,我想返回ID,但若在电话上找不到匹配项,则返回ID。如果我使用OR语句,它将返回两个id,但我只需要返回一个id ID Name Phone --------------------------- 1 Dag 5070000000 2 Adam 2020000000 3 John
ID Name Phone
---------------------------
1 Dag 5070000000
2 Adam 2020000000
3 John 3010000000
@name ='Dag'
@phone ='3010000000'
Select ID From Tbl Where Name=@name OR Phone=@phone
在本例中,它同时返回ID 1和3,但我希望它只返回ID 1,因为对我来说,名称匹配比电话匹配更重要。请帮助。如果您需要一行,可以执行以下操作:
select ID
from Tbl
where Name = @name OR Phone = @phone
order by (case when name = @name and phone = @phone then 1
when name = @name then 2
else 3
end)
fetch first 1 row only;
注意:并非所有数据库都能识别ISO/ANSI标准
仅获取前1行
。有些人拼写它limit
。有些选择顶部(1)
如果需要一行,可以执行以下操作:
select ID
from Tbl
where Name = @name OR Phone = @phone
order by (case when name = @name and phone = @phone then 1
when name = @name then 2
else 3
end)
fetch first 1 row only;
注意:并非所有数据库都能识别ISO/ANSI标准
仅获取前1行
。有些人拼写它limit
。一些选择顶部(1)
用你正在使用的数据库标记你的问题。用你正在使用的数据库标记你的问题。