首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MySql -获取最小、最大和3个随机行

MySql -获取最小、最大和3个随机行
EN

Stack Overflow用户
提问于 2017-06-15 10:37:15
回答 7查看 1.5K关注 0票数 10

我想要一个MySql查询得到5行,其中包括最低价格行,最高价格行和其他3个随机行。

表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ID  Product Price
1   data    2
2   data    20
3   data    55
4   data    24
5   data    2
6   data    15
7   data    10
8   data    33
9   data    3
10  data    30

预期结果(包含3个随机行)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ID  Product Price
1   data    2
3   data    55
4   data    24
6   data    15
7   data    10

任何帮助都将不胜感激!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-06-17 14:07:04

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT table.*
  FROM table
     , ( SELECT @minPrice := ( SELECT min(Price) FROM table ) minPrice
              , @minId    := ( SELECT id FROM table WHERE Price = @minPrice ORDER BY rand() LIMIT 1 )
              , @maxPrice := ( SELECT max(Price) FROM table ) maxPrice
              , @maxId    := ( SELECT id FROM table WHERE Price = @maxPrice ORDER BY rand() LIMIT 1 )
       ) tmp
  WHERE table.id in (@minId,@maxId)
UNION
(SELECT *
   FROM table
   WHERE Price not in (@minPrice,@maxPrice)
   ORDER BY rand()
   LIMIT 3
)
票数 10
EN

Stack Overflow用户

发布于 2017-06-17 11:25:22

你可以这样做,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from table order by Price asc limit 0,1
union all
select * from table order by Price desc limit 0,1 
union all
select * from table order by RAND()  limit 0,3 
票数 6
EN

Stack Overflow用户

发布于 2017-06-24 10:27:56

可以通过UNION和sub查询得到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(SELECT * FROM table ORDER BY Price ASC LIMIT 0 , 1 )
UNION ALL 
(SELECT * FROM table ORDER BY Price DESC limit 0,1 )
UNION ALL 
(SELECT * FROM table WHERE Price NOT IN ( SELECT CONCAT( MIN(  `Price` ) ,  ',', MAX(  `Price` ) ) AS MaxPrice FROM table ) ) ORDER BY RAND( ) LIMIT 0 , 3 ) 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44565328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文