Php 如何将不同的列作为一列进行排序?
我有以下代码:Php 如何将不同的列作为一列进行排序?,php,sql-server,Php,Sql Server,我有以下代码: $db = $this->database[GDB]; $num_rows = $db->doQuery('SELECT TOP 100 strUserId, TotalTime, Nation, LoginDT FROM USERDATA WHERE Authority IN(1, 2) ORDER BY TotalTime DESC'); if ($num_rows == -1) { $db->getError(); return; } 我想做的是: 按以
$db = $this->database[GDB];
$num_rows = $db->doQuery('SELECT TOP 100 strUserId, TotalTime, Nation, LoginDT FROM USERDATA WHERE Authority IN(1, 2) ORDER BY TotalTime DESC');
if ($num_rows == -1)
{
$db->getError();
return;
}
我想做的是:
按以下方式订购:
TotalTime + (time() + 7200 - LoginDT)
我如何在上面的查询中做到这一点
我使用MSSQL Server 2005您试过了吗
SELECT TOP 100 strUserId, TotalTime + (time() + 7200 - LoginDT) as
newTotalTime, Nation, LoginDT FROM USERDATA WHERE Authority IN(1, 2)
ORDER BY newTotalTime DESC
您可以将查询更改为
$num_rows = $db->doQuery('SELECT TOP 100 strUserId, TotalTime, Nation, LoginDT FROM USERDATA WHERE Authority IN(1, 2) ORDER BY (TotalTime + ('.time().' + 7200 - LoginDT)) DESC');
请注意,查询是与连接的,因为它是一个PHP函数,而不是SQL Server函数
这是生成的查询
SELECT TOP 100 strUserId, TotalTime, Nation, LoginDT FROM USERDATA WHERE Authority IN(1, 2) ORDER BY (TotalTime + (1416132847 + 7200 - LoginDT)) DESC
演示:按TotalTime+排序(time()+7200-LoginDT)
不起作用,出现错误,什么也没有出现。我的意思是它不起作用,出现错误。什么都没有,只是不算数。可能我正在使用MSSQL Server 2005,但不应该使用,因为支持all time()和etc。还有其他方法吗?什么是time()+7200
常量?请尝试TotalTime-LoginDT
@MokIk您所说的time()
是什么意思?我认为time()
不是sql Server中的内置函数,因为我在脚本中使用了下面列中的这些值,并且需要单独使用它们。有没有办法对它们进行分组并仍然单独使用它们?TotalTime+(time()+7200-LoginDT)as newTotalTime将作为一个单独的列在sql结果中返回。基本上,sql将返回strUserId、newtotalime、Nation、LoginDT,其中newtotalime按desc排序。我的意思是,我需要在newtotalime之上作为独立的TotalTime。如何实现?您可以在查询中将其添加为“选择前100名strusterid,(TotalTime+(time()+7200-LoginDT))作为newTotalTime,Nation,LoginDT,TotalTime FROM USERDATA,其中权限按newTotalTime DESC的(1,2)顺序排列”