gpt4 book ai didi

python - 如何从表中选择 2 个不同的随机行?

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:45 30 4
gpt4 key购买 nike

现在我有

row=session.query(Item).order_by(func.random()).limit(2)
name1=row[0].name
name2=row[1].name

这给了我每个条目的第一列(名称)。问题是,我得到了倍数(它会两次选择相同的随机行。我希望它总是不同的。有没有办法在没有 if, then 语句的情况下做到这一点?

如果它有用,当我打印行时,它会给我这样的东西:

SELECT items.id AS items_id, items.name AS items_name, items.data AS items_data FROM items ORDER BY random() LIMIT ? OFFSET ?

为什么会说限制?我已经设置了 limit(2)

最佳答案

似乎在 SQL 中对 func.random() 使用 order_by 是个坏主意 (http://www.webtrenches.com/post.cfm/avoid-rand-in-mysql)。相反,我统计了表的长度,在这个长度内找到了 2 个随机数,然后查询表以找到与这些随机数相关联的行。显然这更快。至少它没有任何重复:)

number=session.query(func.count(Item.id)).scalar()
randoms=random.sample(range(number),2)
item1=session.query(Item).filter_by(id=randoms[0]+1).one()
item2=session.query(Item).filter_by(id=randoms[1]+1).one()

关于python - 如何从表中选择 2 个不同的随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19507467/

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