我有一个查询,它检查db中某个case的值,并找到该值所在表中的秩 BOD
:
SELECT DISTINCT bod_bod, (SELECT REPLACE(predf_VPS,'.','') as vps FROM PREDMETIFView WHERE
predf_nas_br=?) as vps_baza FROM BOD WHERE (SELECT REPLACE(predf_VPS,'.','') as vps
FROM PREDMETIFView WHERE predf_nas_br=?) BETWEEN bod_od AND bod_do ORDER BY bod_bod ASC
LIMIT 1
表bod为:
| bod_id | bod_od | bod_do | bod_bod | bod_dodan |
| ------ | --------- | --------- | ------- | ------------------- |
| 0 | 0.00 | 2500.00 | 25 | 0000-00-00 00:00:00 |
| 1 | 2500.01 | 5000.00 | 50 | 0000-00-00 00:00:00 |
| 2 | 5000.01 | 10000.00 | 75 | 0000-00-00 00:00:00 |
| 3 | 10000.01 | 100000.00 | 100 | 2020-04-10 13:06:53 |
| 4 | 100000.01 | 250000.00 | 250 | 0000-00-00 00:00:00 |
| 5 | 250000.01 | 500000.00 | 500 | 2020-04-08 23:04:30 |
子查询值的当前sql 11899
从 PREDMETIFView
表select给出结果:
bod_bod vps_baza
100 11899
因为数字 11899
介于 10000.01
以及 100000.00
.
我后来用php对这个数字做了一些计算。
但问题是:当数字大于500000.00时,查询的结果集是0行(因为没有匹配的秩)。但我还是需要那个号码 vps_baza
用php进行计算。
那么,有没有一种方法可以说,如果没有排名匹配,它仍然会生成一个结果行(不改变表bod),例如 vps_baza 511899
价值:
bod_bod vps_baza
null 511899
mysql版本是5.6
我做了一把小提琴:
如果你在线上改变值 98
从 511899
例如 899
,我得到了行,但是值更大 500000
它失败了。
1条答案
按热度按时间fcg9iug31#
你可以用
left join
:注:此答案基于您的问题和样本数据。我很不清楚这个问题和这两个问题有什么关系。