gpt4 book ai didi

MySQL 根据一列降序数字获取一系列值,然后随机化该范围

转载 作者:行者123 更新时间:2023-11-29 13:05:48 24 4
gpt4 key购买 nike

我在代码中实现简单查询时遇到问题。我试图获取一系列值,例如在名为 front_weight 的列中按顺序编号 1-20,然后按该列随机化该查询。到目前为止我想出的是:

$sql_rand_limit_range = "SELECT * FROM posts 
WHERE active='y'
AND front_weight > 0
AND front_weight
IN (SELECT front_weight
FROM posts ORDER BY front_weight DESC LIMIT 0, 20)
ORDER BY RAND()";

我收到此错误:

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

顺便说一句,我正在运行 MySQL 5.1 版本。然后,我尝试对查询进行一些尝试,在我看来应该可行:

$sql_rand_limit_range = "SELECT * FROM posts 
WHERE active='y'
AND front_weight > 0
ORDER BY RAND() front_weight DESC
LIMIT 0, 20";


$sql_rand_limit_range = "SELECT * FROM posts
WHERE active='y'
AND front_weight > 0
ORDER BY front_weight DESC
LIMIT 0, 20
RAND()";

但是你们 SQL 忍者可以看到这让我走了多远。有什么想法或者我必须使用 Php 代码做一些更激烈的事情,比如随机化 mysqli_fetch_array 吗?

编辑:我收到很多奇怪的查询来返回类似 15,12,3,17,9,5,11...... 我只想返回随机列中的第 1-20 行。基本上我试图用 sql 术语询问如何得到这个:

 ORDER BY front_weight DESC LIMIT 0, 20 

要玩得好:

 ORDER BY RAND()

我真的希望我不需要联接和伪表,但如果需要,那就这样吧。

最佳答案

感谢大家的帮助。在继续摆弄它之后,我找到了满足我需求的正确查询:

$sql_rand_limit_range = "SELECT * FROM posts 
WHERE active='y'
AND front_weight BETWEEN 1 AND 20
ORDER BY RAND()";

好旧的BETWEEN,很少使用,但从未真正忘记!

关于MySQL 根据一列降序数字获取一系列值,然后随机化该范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726791/

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