gpt4 book ai didi

php - 如何限制/偏移每个唯一 ID 返回多行的查询?

转载 作者:行者123 更新时间:2023-11-30 23:37:41 24 4
gpt4 key购买 nike

我的问题是我需要对该查询中的数据进行分页:

function search($search_term, $limit, $offset)
{
$id = $this->auth->get_user_id();

$query = $this->db->query("
SELECT user_id,
first_name,
cars_name,
cars_id
FROM user_profiles
LEFT JOIN cars
ON cars.id_fk = user_id
WHERE user_id NOT LIKE '$id'
AND activated = 1
AND banned = 0
AND first_name LIKE '%$search_term%'
ORDER BY first_name ASC
");

$search_data = array();
foreach ($query->result() as $row) {

$search_data[$row->user_id]['name'] = $row->first_name;
$search_data[$row->user_id]['cars'][$row->cars_id] = array(
'cars_name' => $row->cars_name);
}
return $search_data;
}

示例数据表/查询响应为:

1   JOE   HONDA    123
1 JOE TOYOTA 124
2 MAC VW 125
2 MAC HONDA 126
2 MAC TESLA 127
3 STU SUBARU 128
3 STU KIA 129

-----------
Page 1
-----------
1 JOE HONDA 123
TOYOTA 124

2 MAC VW 125
HONDA 126

------------
Page 2
------------
3 STU SUBARU 128
KIA 129

如果我在 MySQL 查询的末尾输入一个限制和偏移量

...
LIMIT $limit
OFFSET $offset;
");

限制和偏移量应用于行数,而不是按用户分组的行数。

我试过使用 GROUP BY 但没能成功。

我的目标是按上述方式进行查询,但按计算用户的行数限制和偏移查询,而不是所有行。

有什么想法吗?

最佳答案

我没有看到在一个查询中执行此操作的方法。我的解决方案是使用具有相同参数的查询来获取唯一 ID 的数量:

SELECT COUNT(1) AS uid_count
FROM user_profiles
LEFT JOIN cars
ON cars.id_fk = user_id
GROUP BY user_profiles.user_id
WHERE user_id NOT LIKE '$id'
AND activated = 1
AND banned = 0
AND first_name LIKE '%$search_term%'

然后获取 uid_count mysql_num_rows 并使用它来计算上述查询的分页变量。

关于php - 如何限制/偏移每个唯一 ID 返回多行的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com