gpt4 book ai didi

mysql - 有没有办法防止相同 user_id 的 mySQL 结果是连续的?

转载 作者:行者123 更新时间:2023-11-30 22:37:18 27 4
gpt4 key购买 nike

我有一张这样的产品表:

产品名称 |产品编号 | user_id

我在表格上没有很多排序选项,但我想这样做,这样来自同一 user_id 的产品就不会一个接一个地出现,比如:

product from 21
product from 21
product from 21
product from 17
product from 17
product from 17
product from 53
product from 53
product from 53

有什么简单的方法可以让 mySQL 随机化它,让它像这样显示吗?

product from 21
product from 53
product from 17
product from 21
product from 17
product from 53
product from 21
product from 17
product from 53

我知道你可以随机返回结果,但是如果有多个页面就会出现问题,结果可能会重复。

那么,有什么简单的方法可以让 mySQL 知道嘿,你不能同时显示用户 21 的 2 个结果

最佳答案

一种方法是 ... ORDER BY rand()。对我来说,这有点草率,因为每次运行查询都会得到不同的结果,但它确实有效。混淆顺序的一种方法是组合字段以生成简单的散列。例如,

SELECT * FROM `products` ORDER BY `product_id` * `user_id`

这样,如果多次运行查询,结果总是相同的,但每次查询的顺序都是准随机的。这样做的额外好处是允许您对结果进行分页,因为无论 LIMIT 是什么,每个查询的顺序都是相同的。您可以尝试添加字段、减去字段,甚至组合多个操作。

另一种添加更多准随机性的方法是对产品名称执行字符串函数。例如,搜索产品名称中第一个 'b' 的位置并将其添加到产品/用户哈希中:

SELECT * FROM `products` ORDER BY `product_id` * `user_id` + INSTR(`product_name`, 'b')

使用字符串函数比乘法“昂贵”得多,但如果第一个查询没有充分混合结果,这可能会。

关于mysql - 有没有办法防止相同 user_id 的 mySQL 结果是连续的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32146286/

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