gpt4 book ai didi

mysql - 如何在 mysql 中加入另一个表中的随机行?

转载 作者:行者123 更新时间:2023-11-29 03:42:58 25 4
gpt4 key购买 nike

我有 2 个表。

一个列表事物 - thing_id, thing_name, thing_status

其他表格列出了每个事物的属性。

attribute_id, attribute_thing, attribute_name, attribute_status

thing_id = attribute_thing

基本上我想抓取一个具有 thing_status = 1 的随机事物,然后我需要将它连接到一个具有 attribute_status = 1 的随机属性/p>

每个东西可能有0到N个属性,0个属性的东西还是要返回的。如果一个事物有超过 1 个属性,则应该返回一个随机的属性。

我有以下查询:

SELECT * FROM things
LEFT JOIN attributes ON thing_id = attribute_thing AND attribute_status = 1
WHERE thing_status = 1
GROUP BY thing_id
ORDER BY rand()
LIMIT 1

这里的问题是,它总是连接到第一个属性(该属性具有最低的 attribute_id。我需要随机选择一个。

删除 GROUP BY 子句有点管用,但是具有许多属性的东西更有可能被选中。因此,具有 30 个属性的事物被选中的可能性是具有 1 个属性的事物的 30 倍。我希望所有的事情都被平等对待。

最佳答案

如果您只需要属性中的 1 个整数列,您可以这样做:

 SELECT SUBSTRING_INDEX(GROUP_CONCAT(attributes.id ORDER BY RAND() SEPARATOR ',')),',',1)

...如果您需要更多,我看不到除了嵌套一些子查询之外的其他选择。

关于mysql - 如何在 mysql 中加入另一个表中的随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10987146/

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