Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将不同的列作为一列进行排序?_Php_Sql Server - Fatal编程技术网

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)顺序排列”