我有以下代码:
$GetUID = $c->query("SELECT UserUID FROM dbo.Users_Master ORDER BY UserID DESC");
$UserUniqueID = $GetUID->fetch(PDO::FETCH_ASSOC);
$UUID = $UserUniqueID['UserUID'];
$NewUUID = $UUID + 1;
这是成功的,但问题出在我的查询中。
它总是在我的数据库中输入12。
我转到Microsoft SQL查询窗口并输入:
USE UserData;
SELECT UserUID FROM dbo.Users_Master ORDER BY UserID DESC
然后又回来了:
11,17,15,19,16,18,10,13,12,14,3
这不是从最高到最低排序。
然后我继续使用:
USE UserData;
SELECT UserUID FROM dbo.Users_Master ORDER BY UserID ASC
返回了:
3,14,12,13,10,18,16,19,15,17,11
我想获取最高的UserUID和+1 ..为什么我的代码一直在选择 11 ?
答案 0 :(得分:4)
UserId
的声音不属于数据类型int
,您可以cast()
订购价值:
SELECT UserUID
FROM dbo.Users_Master
ORDER BY cast(UserID as int) DESC
但是,最好的解决方案是更改表中的数据类型以匹配存储的内容。
要更改SQL Server中的表,您可以使用:
alter table dbo.Users_Master alter column UserID int;
这会将数据存储在正确的数据类型中,因此您无需cast()
该值进行订购。
编辑#1,根据您UserId
是varchar的评论,您对ORDER BY UserUID DESC
int
的意思是{{1}}