gpt4 book ai didi

javascript - SQL 查询错误 - 修复建议?

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:32 25 4
gpt4 key购买 nike

我有一个有趣的错误并且有兴趣查看可能的解决方案。情况是这样的:我有一个用户表(user_id、first_name、last_name)。我有一个地址表(user_id,地址)。1 个用户可以有多个地址。

我想要一组结果,例如:{'user':user_id, 'address':address_array}//如果用户有超过 1 个地址,则将其分组。

我通过获取按 user_id 排序的所有内容,然后遍历结果来完成此操作。

for (every item in results)
{
if (current result.user_id equal to previous one)
{
append the address to previous user
}
else
{
add the new one to my return array
}
}

这似乎工作正常,除了现在我想介绍 LIMIT。例如,我只想要前 20 个用户。当客户端按下 NEXT 时,它会跳过前 20 条并获取接下来的 20 条记录。

问题是:

记录19:用户19有地址1

记录 20:用户 19 有地址 2

记录 21:用户 19 的地址为 3

记录 22:用户 19 的地址为 4

按照我现在的做法,第一批 20 个只会显示用户 19 只有 2 个地址。然后,当客户端请求接下来的 20 个结果时,用户 19 将再次出现,并显示另外 2 个地址。

此外,我无法通过 array.length 来告诉数据库要跳过多少条记录。我现在需要数一数那里有多少地址。这似乎不是一种优雅的方式,因为代码需要了解数据库的布局方式。

有什么想法吗?

最佳答案

加入包含LIMIT的子查询:

SELECT userid, address
FROM (SELECT user_id
FROM user
ORDER BY user_id
LIMIT 0, 20) AS u
JOIN address AS a ON u.user_id = a.userid

将第二组的 0 替换为 20,依此类推。

关于javascript - SQL 查询错误 - 修复建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24581088/

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