MySQL查询在子查询中添加限制
以下是我的表测试值:MySQL查询在子查询中添加限制,mysql,subquery,Mysql,Subquery,以下是我的表测试值: Price ---------- 300 600 900 1000 1800 2000 我想查询这样,当我搜索300时,我应该得到4条记录3006009001000 如果我搜索900,我可以得到60090010001800。 i、 e.两项记录900 以下是我尝试的查询: SELECT * FROM table h where CONDITIONS and (price in (select price from table where price <=900
Price
----------
300
600
900
1000
1800
2000
我想查询这样,当我搜索300时,我应该得到4条记录3006009001000
如果我搜索900,我可以得到60090010001800。
i、 e.两项记录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;
我搜索了很多关于堆栈溢出的内容,但都没有找到。请提供帮助。使用union,因为此mysql版本不接受子查询中的限制
从price 900 limit 2在where-in/EXSISTS/ANY/SOME子查询中MySQL不支持limit的表中选择*
(SELECT * /* this should be a columnlist */
FROM tablename
WHERE price < 900
ORDER BY price LIMIT 2)
UNION
(SELECT * /* this should be a columnlist */
FROM tablename
WHERE price >= 900
ORDER BY price LIMIT 2)
每个select的括号都很重要
你可以试试下面的
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;
是的,我知道。除了UNION之外,没有其他解决方法吗?在这种情况下,order by不起作用。我发现错误UNION和order by的用法不正确,只是查看了MySQL文档,有一个完全相同的示例,但可能是SELECT*导致的。我可以使用join吗?我不太擅长加入,如果你能帮忙的话:是的,你可以,但为什么你要加入。它的效率不亚于工会。我在我的答案中添加了一个小提琴的链接,没有错误请编辑你的答案并在其中包含一些解释。只有代码的答案有时足够好,但代码+解释的答案总是更好。我可以有更多关于这个问题的说明吗??