为我刻字燃烧查询。 我想获取两个年龄条件之间的所有记录。任何人请帮助我。我的查询写在下面
SELECT tbl_trip.* FROM tbl_trip WHERE ((tbl_trip.minage >= '15' AND tbl_trip.maxage <= '15') OR (tbl_trip.maxage <= '28' AND tbl_trip.minage >= '28'))
在这个查询中,我想要来自数据库的所有记录..年龄介于15到28之间。在这个所有的reords得到,例如最小到最大值:1到16,12到30,16到24,27到28但不能达到3到13或29或100。提前谢谢。
答案 0 :(得分:3)
这是Rohit写一个令人困惑的查询的正确方法。
select * from tbl_trip where ((minage>=12 and minage<=22) or (maxage>=12 and maxage<=22)) or ((minage<=12 and maxage>=22))
由于
答案 1 :(得分:2)
据我所知,您需要从DB获取所有记录,其中minage - maxage range与给定的记录相交。在下文中,给定范围将从X到Y,行的范围将从A到B.显然,Y> X,B>甲
这些范围有三种情况交叉:
A&lt; = X B&gt; = Y
A&lt; = X 和 X&lt; = B B&lt; = Y
X&lt; = A 和 A&lt; = Y Y&lt; = B
(A&lt; = X&amp; B&gt; = Y)|| (A <= X&amp;&amp; X&lt; = B&amp;&amp; B&lt; = Y)|| (X&lt; = A&amp;&amp; A&lt; = Y&amp;&amp; Y&lt; = B)
答案 2 :(得分:2)
尝试使用它,它对我来说很好用
select * from tbl_trip
Where GREATEST(GREATEST(minage,12)-LEAST(maxage,22),0)=0
答案 3 :(得分:1)
此查询检查您在minage和maxage之间的给定范围,反之亦然。
select * from tbl_trip
where (((minage>=15 and minage<=22) or (maxage>=15 and maxage<=22))
or((15>=minage and 15<=maxage) or (22<=maxage and 22>=minage)))
这也有效,请在使用前正确检查:
select * from tbl_trip
where ((minage>=12 and minage<=22) or (maxage>=12 and maxage<=22))
or ((12>=minage and 22<=maxage))
以下是另一种方式:
select * from tbl_trip
Where GREATEST(GREATEST(minage,12)-LEAST(maxage,22),0)=0