表:学生
ID Name Marks
1 Ashley 81
2 Samantha 75
4 Julia 76
3 Belvet 84
要返回标记大于75的名称的查询,输出将按每个名称的最后三个字符排序,如果是tie,则按升序ID排序。
我的查询: -
Select Name
From Students
Where Marks > 75
Order By (Select Substring(Name,1,2))
到目前为止我尝试了这个,我试图找出order by
,但这是错误的。我怎么能完成它?
答案 0 :(得分:4)
<!DOCTYPE html>
<html ng-app="demo">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.min.js"></script>
<script src="https://code.angularjs.org/1.4.6/angular-route.js"></script>
</head>
<body>
<a href="#linkOne">Link One</a>
<a href="#linkTwo">Link Two</a>
<div ng-view></div>
</body>
</html>
你也可以使用:
SELECT Name
FROM Students
WHERE Marks > 75
ORDER BY RIGHT(Name, 3),
ID
作为替代方案。
答案 1 :(得分:2)
SELECT
子句中不需要ORDER BY
。并且通过 last 排序三个字符而不是 first 使用它:
SELECT Name
FROM Students
WHERE Marks > 75
ORDER BY RIGHT(Name, 3), ID
要按ID
订购关联,只需添加ID
作为第二个ORDER
参数。
答案 2 :(得分:1)
SELECT Name
FROM Students
WHERE Marks > 75
ORDER BY substring(Name, LEN(Name)-2, 3), ID
答案 3 :(得分:0)
以下是您需要的部分。按顺序排序,然后是id。
select substring('THENAME', LENGTH('THENAME')-2, 3)
整个代码:
Select Name from Students
where Marks > 75
order by (Substring(Name,LENGTH(Name)-2,3)), Id
答案 4 :(得分:-2)
在sql中创建此函数:
Alter function dbo.getlastthreechar (@s varchar(256)) returns varchar(3)
with schemabinding<
begin
if @s is null
return null
declare @s2 varchar(256)
set @s2 = ''
set @s2 = RIGHT(@s,3)
if len(@s2) = 0
return null
return @s2
end
然后你会查询:
Select Name from Students where Marks > 75 order by dbo.getlastthreechar(Name )