Microsoft SQL Server查询返回错误的结果

时间:2013-02-04 22:14:27

标签: php sql-server

我有以下代码:

$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

1 个答案:

答案 0 :(得分:4)

UserId的声音不属于数据类型int,您可以cast()订购价值:

SELECT UserUID 
FROM dbo.Users_Master 
ORDER BY cast(UserID as int) DESC

请参阅SQL Fiddle with Demo

但是,最好的解决方案是更改表中的数据类型以匹配存储的内容。

要更改SQL Server中的表,您可以使用:

alter table dbo.Users_Master alter column UserID int;

这会将数据存储在正确的数据类型中,因此您无需cast()该值进行订购。

编辑#1,根据您UserId是varchar的评论,您对ORDER BY UserUID DESC int的意思是{{1}}