我有一个表'Employee',其中包含 DevId,Id,FName,FNamePinYin 列。 FName将包含中文和英文的联系人姓名。现在根据要求,我可以设法按以下顺序获取联系人:
FName FNamePinYin
爱华 杨 AIHUA YANG
安国华 ANGUOHUA
Anguohua ANGUOHUA
Aihua Yang AIHUA YANG
爸 BA
波 小 BO BEI BI XIAO
毕慧 BIHUI
Bin Guo BIN GUO
Bihui BIHUI
Ba BA
使用以下查询:
Select FName, SortString
from Employee
where Id in (SELECT Id
FROM EMP1
WHERE '1' = DevId
ORDER BY FnamePinYin
LIMIT 500 OFFSET 0)
ORDER BY substr(FnamePinYin,1,1) , Lower(FName) DESC
现在问题是联系人名称没有按升序排序。
注意:此处需要使用Lower(FName)DESC才能在每个字母的类别中首先显示中文名称。
我想要的输出:
FName FNamePinYin
爱华 杨 AIHUA YANG
安国华 ANGUOHUA
Aihua Yang AIHUA YANG
Anguohua ANGUOHUA
爸 BA
波 小 BO BEI BI XIAO
毕慧 BIHUI
Ba BA
Bihui BIHUI
Bin Guo BIN GUO
FNamePinYin是英文对应的中文名字。
有人能帮助我得到我想要的结果吗?
答案 0 :(得分:0)
你的问题仍然不完全清楚,但根据你的陈述,中英文名称应该按照加入顺序排列" "在每个类别(A-Z)"中,以下内容应该做我想要的:
select *
from Employee
where Id in (SELECT Id
FROM PBAPL1
WHERE '1' = DevId
ORDER BY FnamePinYin
LIMIT 500 OFFSET 0)
order by substr(FNamePinYin,1,1), (substr(FName,1,1) < 'zz'), FName;