如何将不同列的ORDER BY作为一列?

时间:2014-11-16 00:38:25

标签: 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;
}

我想做的是以下内容:

ORDER BY喜欢这样:

TotalTime + (time() + 7200 - LoginDT)

我在上面的查询中如何做到这一点?

我使用的是MSSQL Server 2005

2 个答案:

答案 0 :(得分:1)

你试过吗

SELECT TOP 100 strUserId, TotalTime + (time() + 7200 - LoginDT) as
newTotalTime, Nation, LoginDT FROM USERDATA WHERE Authority IN(1, 2)
ORDER BY newTotalTime DESC

答案 1 :(得分:0)

您可以将查询更改为此

$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');

请注意,查询与time()连接,因为它是PHP函数,而不是SQL Server函数。

这是生成的查询

SELECT TOP 100 strUserId, TotalTime, Nation, LoginDT FROM USERDATA WHERE Authority IN(1, 2) ORDER BY (TotalTime + (1416132847 + 7200 - LoginDT)) DESC

演示:http://codepad.org/vSR2FJ8C