我正在使用codeigniter并且有工作查询来获取用户3图像。我想计算一个给每个图像一个数字1,2,3,4,5,6,7 ......并且想要查询输出
-number (count),
-id,
-image,
-date
我的SQL查询:
function bar_images_first($user_id)
{
$sql = "SELECT id, image, UNIX_TIMESTAMP(date) as date FROM images WHERE user_id = 3 LIMIT 3";
$query = $this->db->query($sql, $user_id);
return $query->result_array();
}
是否可以在查询中执行计数器?
答案 0 :(得分:3)
可以通过将SQL参数设置为
来实现SET @cnt := 0;
SELECT
@cnt := @cnt + 1,
id,
image,
UNIX_TIMESTAMP(date) as date
FROM images WHERE user_id = 3 LIMIT 3";
但是这样的多个语句不能从PHP的mysql_query()
方法执行。但是,像mysqli_multi_query()
这样的mysqli函数也允许执行多个查询,所以如果可能的话,使用mysqli方法而不是AR方法。
但是,您可以逐个运行多组查询。
$query = array(
"SET @cnt := 0;",
"SELECT
@cnt := @cnt + 1,
id,
image,
UNIX_TIMESTAMP(date) as date
FROM images WHERE user_id = 3 LIMIT 3"
);
foreach($query as $qry) {
$result= $this->db->query($qry);
//.........
}
答案 1 :(得分:2)
要作为单个查询运行:
SELECT @curRow := @curRow + 1 AS row_number, id, image, UNIX_TIMESTAMP(date) as date
FROM images
JOIN (SELECT @curRow := 0) r
WHERE user_id = 3
LIMIT 3
这对MySQL非常具体。如果你想要更多的可移植代码,我建议你在代码中使用行计数器。
修改 - 忘记给予应有的信任:MySQL - row number in recordset?