MySQL 查询在子查询中添加限制

标签 mysql subquery

这是我的表测试值:

Price
----------
300
600
900
1000
1800
2000

我想这样查询,当我搜索 300 时,我应该得到 4 条记录 300,600,900,1000。

如果我搜索900,我可以得到600,900,1000,1800。 即两条记录 <=900 和两条记录 >900

这是我试过的查询:

SELECT * FROM table h where CONDITIONS 
 and  (price in (select price from table where price <=900) // I want to add   LIMIT 2 in this subquery
 or price in (select price from table where price >900)//LIMIT 2
)
order by FIELD(price ,900) DESC limit 5;

我在堆栈溢出方面进行了很多搜索,但没有任何效果。请帮忙。

最佳答案

您可以尝试以下...

select * from ((select h.* from table_name h where amount <=300 order by amount desc limit 2)
union
(select h.* from table_name h where amount >300 order by amount limit 2)) 
derived_table order by FIELD(amount,300) desc;

关于MySQL 查询在子查询中添加限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28094374/

相关文章:

mysql - 从mysql表中获取所有日期数据的计数总和

mysql - varchar 的自然排序

mysql - 在 MySQL 中使用 SELECT ... FOR UPDATE 死锁

MySQL INSERT ... SELECT ... 永无止境,CPU 处于最大状态

php - php执行顺序

mysql - SQL:当一列中的值与不同列中的另一个值出现在同一行中时进行计数

SQL "In"语句匹配任何内容

MySQL - SELECT WHERE field IN(子查询) - 为什么非常慢?

mysql - 使用 "IN"关键字的子查询

mysql - 使用 MySQL 时 SUB QUERY、LIMIT 和 ORDER BY 的性能注意事项