试图找出如何在结果集中包含行位置的返回值。它是一个非常简单的表,由computer_id
按WHERE子句排序。我想要的就是每个结果中的(*row position*) as position
。
我在SO上搜索了一些东西,但没有任何东西可以使用。
$stmt = $db->prepare("
SELECT *
FROM computers
WHERE account_id = :account_id
ORDER BY computer_id
");
$stmt->bindValue( ':account_id', $_SESSION['user']['account_id'] );
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo '<pre>',print_r($results,1),'</pre>';
答案 0 :(得分:1)
您可以在一个查询中执行您想要的操作(引用的重复问题不会执行此操作):
SELECT (@rn := @rn + 1) as rownumber, c.*
FROM computers c cross join
(select @rn := 0) var
WHERE account_id = :account_id
ORDER BY computer_id;
要获取所有行的行号,请使用子查询:
SELECT c.*
FROM (SELECT (@rn := @rn + 1) as rownumber, c.*
FROM computers c cross join
(select @rn := 0) var
ORDER BY computer_id
) c
WHERE account_id = :account_id;
请注意,这将花费更多时间,因为它必须处理整个表。
答案 1 :(得分:0)
由于这是PHP,你可以创建一个变量,遍历结果并随时增加变量。
还有:ROW_NUMBER() equivalent in MySQL for inserting
可以在MS SQL中获得类似于row_number()的内容。