我有以下代码:
$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是什么?
听起来UserId
的数据类型不是int
,您可以将cast()
的值排序为:
SELECT UserUID
FROM dbo.Users_Master
ORDER BY cast(UserID as int) DESC
请参阅带有演示的SQL Fiddle
但是,最好的解决方案是更改表中的数据类型以匹配所存储的数据。
要更改SQL Server中的表,您可以使用:
alter table dbo.Users_Master alter column UserID int;
这样可以将数据存储在正确的数据类型中,这样就不必cast()
值来排序
编辑#1,根据您对UserId
是varchar的评论,您似乎指的是ORDER BY UserUID DESC
,它是int