簡體   English   中英

如何在postgres表中獲取包含某些文本的隨機行

[英]How to get a random row that contains certain text in a postgres table

我對 sql 很陌生,如果有一個表my_table ,我正在使用 postgresql

 id |   name
----+----------

我怎么能得到一個包含特定文本的隨機行。

到目前為止,我有這個,選擇一個隨機行:

select * from my_table offset random() * (select count(*) from my_table) limit 5;

我將如何修改它以僅從名稱類似的行中進行選擇,或者有更好的方法嗎? 謝謝!

您的代碼不能保證返回 5 個隨機行——甚至根本不返回 5 行,因為偏移量可能接近數據的末尾。 如果表不是很大或者where子句的匹配項相對較少,您可以使用:

select t.*
from t
where name like ?
order by random()
limit 5;

對於較大的表,性能影響取決於與where條件匹配的行數以及是否可以使用索引滿足where條件。 性能取決於需要排序的行數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM