0

我有以下代码:

$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

4

1 回答 1

4

听起来UserId不是 datatype 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 DESCint

于 2013-02-04T22:16:36.727 回答