sql - 选择没有重复项的随机行

标签 sql sql-server sql-server-2008

我需要选择随机数量的行,但还要确保这些行不包含重复的图像值:

ImgID   Image

1637    PM1371564839.jpg    
1638    PM1371564839.jpg    
1639    PM1371564840.jpg    
1640    PM1371564840.jpg    
1641    PM1371564840.jpg    
1642    PM1371564841.jpg    
1643    PM1371564842.jpg    
1644    PM1371564842.jpg    
1645    PM1371564842.jpg    
1646    PM1371564843.jpg    
1647    PM1371564843.jpg

我做了一个 - select top 25% * from Table order by newid(); 这适用于事物的随机方面,但它会带回重复项。我尝试过一种独特的方法,但它不喜欢按部分排序。基本上有没有更好的方法来显示随机 3 张不重复的图像。

最佳答案

看起来您有多个具有不同 ImgID 的图像

也许您想要这样的东西来获得独特的图像

SELECT TOP 25 PERCENT * FROM 
( 
  SELECT 
    max(imgID) imgID,  
    Image
  FROM [table]
  GROUP BY [Image]
) x
ORDER BY newid();

关于sql - 选择没有重复项的随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17177758/

相关文章:

sql - 嵌套 SQL 查询是原子的吗?

sql-server - 通过 go-mssqldb 查询 golang SQL Server

sql-server - 错误 17886 - 服务器将断开连接

mysql - 如何查询更改日期没有日期的小时之间

sql - 列中什么时候为空值 "safe"?

sql-server - 数据库导出 Access SQL Server : indexes and keys?

sql-server - DAO RecordsAffected 在通路合并后未返回正确的值

SQL 语句 "Update"SQL Server 2014 中的颜色

c# - .Net 客户端超时

MYSQL 查询统计过去 7 天每天不同值的数量