我有一个包含这样的值的列,例如:
法拉利 - 2013年制造
梅赛德斯 - 2012年制造
Jaguar - 1978年制造
我希望将车辆带回最高或最近的制造年份:
像这样的东西会给我一年,但显然会截断字符串的其余部分:
SELECT
MAX(RIGHT(CarProfile, 4))
FROM mySchema.Car;
如何获得最高年份但保持完整的字符串?
在这种情况下:法拉利 - 2013年制造
答案 0 :(得分:2)
SELECT top 1 *
FROM Car order by RIGHT(CarProfile, 4)*1 desc
答案 1 :(得分:1)
SELECT *
FROM Car
WHERE RIGHT(CarProfile, 4) =
(SELECT MAX(RIGHT(CarProfile, 4))
FROM Car)
你应该正确地规范你的桌子。我的ssugested架构将添加一年的列并对其进行索引,以便它具有很好的查询性能。
答案 2 :(得分:0)
以下Sql供参考:
select CarProfile
from FROM mySchema.Car
where substr(CarProfile, CarProfile.length - 4, CarProfile.length) =
SELECT MAX(RIGHT(CarProfile, 4)) FROM mySchema.Car;
答案 3 :(得分:0)
当你打印出来时,你应该得到'make in',而不是存储在数据库中。所以相反,你的表将是:
CarProfile | Year
---------------
Ferrari | 2013
Mercedes | 2012
Jaguar | 1978
您的'make in'将通过查询检索,如下所示:
SELECT CarProfile, ' - made in', year
FROM Car
HAVING year = MAX(year)
或者你可以在它显示时编写它(例如php):
<?php echo $CarProfile . " - made in " $year;?>
它将使您的桌子更加紧凑和友好