首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql结果集出现问题,如果主查询上有0行,则生成子查询的结果。

问Mysql结果集出现问题,如果主查询上有0行,则生成子查询的结果。
EN

Stack Overflow用户
提问于 2020-06-20 23:32:43
回答 1查看 31关注 0票数 0

我有一个查询,它从DB中检查某些情况的值,并找到值驻留在表BOD中的级别

代码语言:javascript
复制
        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是:

代码语言:javascript
复制
| 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 |

当前对来自11899表的子查询值PREDMETIFView的SQL给出了结果:

代码语言:javascript
复制
bod_bod     vps_baza    
100     11899

因为数字11899在10000.01和100000.00之间。

稍后,我在PHP中用这个数字做了一些计算。

,但问题是:当数字大于500000.00时,查询的结果集为0行(因为没有匹配的秩)。但是,我仍然需要这个数字vps_baza来进行PHP的计算。

因此,是否有一种方法可以说,如果没有排序匹配,它仍然生成一个结果行(不改变表BOD),例如,对于vps_baza 511899值:

代码语言:javascript
复制
bod_bod     vps_baza    
null    511899

MySQL版本为5.6

我做了一个DBfiddle:

如果您将98上的值从511899更改为899,我将得到行,但更大的值则会导致500000失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-20 23:48:20

您可以使用left join

代码语言:javascript
复制
select x.vps_baza, . . .
from (select 11899 as vps_baza) x left join
     bods b
     on x.vps.baza between b.bod_od and b.bod_do;

注意:这个答案是基于你的问题和样本数据。我很不清楚这个查询与这两个问题之间有什么关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62492874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档