我有两个表 Table1 和 Table2,它们通过 xid 和 Yid 相互连接。
表1
xid(int) category(varchar) subcat(varchar)
1 Venue Resort
2 Venue Resort
3 Venue Resort
4 Venue Resort
5 Venue Resort
6 Venue Resort
7 Venue Banquet Hall
8 Venue Resort
9 Apparel Designer
表2
Yid(int) minp(varchar) maxp(varchar)
1 800 1000
2 900 1200
3 1100
4 1300 1600
5 1800
6 800 2000
7 800 1000
8 1500 2100
9 15000 60000
我将这些供应商分为三类,第一类供应商的价格低于卢比。 1000。第二类是价格低于1500和超过1000的供应商。价格超过1500为第三类。目前我仅与 maxp 比较价格,它对我有用。
我用来与 maxp 进行比较的查询是
SELECT xid from Table1,Table2 WHERE
Table1.xid=Table2.Yid
AND category='venue'
AND subcat='Resort'
AND maxp<=1000
我得到的输出是
xid
1
7
现在我想将价格与 minp 和 maxp 进行比较,我想计算并获取所有那些 minp 或 maxp 小于 1000、在 1000 到 1500 之间、大于 1500 的 xid。
预计产出低于卢比。 1000
xid
1
2
6
7
预计产出超过卢比。 1000 且小于等于 1500
xid
2
3
4
8
注意:由于某些原因,我无法将 minp 和 maxp 的数据类型从 varchar 更改为 int 或 long,如果 minp 为空则不与其进行比较。
提前致谢...
最佳答案
您需要根据预期结果检查两列。
SELECT xid
from Table1
INNER JOIN Table2
ON Table1.xid=Table2.Yid
Where category='venue'
AND subcat='Resort'
AND (minp<=1000 or minp<=1000)
and minp <> ''
找到卢比。 1000 且小于等于 1500
SELECT xid
from Table1
INNER JOIN Table2
ON Table1.xid=Table2.Yid
Where category='venue'
AND subcat='Resort'
AND (minp > 1000 or maxp > 1000) and (minp <= 1500 or maxp <= 1500)
and minp <> ''
注意:开始使用INNER JOIN
语法而不是旧式逗号分隔连接
关于php - Mysql-根据特定条件从两列中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45050348/