mysql - 不满足条件时 SELECT 语句应返回 0

标签 mysql sql

如果不满足条件,如何使以下 MYSQL 语句返回 0。

(SELECT Sum(B.trblksize) AS RxData
 FROM   referencecoexistence_ber_lte B,
        (SELECT C.*
         FROM   referencecoexistence C
         WHERE  `sw_ver` = '0.4'
                AND `lte_n_frames` = '50'
                AND `lte_rb` = '6'
                AND `lte_mcs` = '11'
                AND `lte_p_mw` = '6.000000e-03'
                AND `lte_vmsf_type` = 'BS'
                AND `lte_vmsf_subframes` = '8 9'
                AND `wlan_mcs` = '5'
                AND `wlan_p_mw` = '100'
                AND `channel` = 'A330'
                AND `lte_freq_hz` = '2403000000'
                AND `wlan_freq_hz` = '2412000000'
                AND `wlan_ieee` = '802.11n') AS TableX
 WHERE  TableX.id = B.id
        AND B.ber = '0'
 GROUP  BY lte_dist_m)  

结果是:空集(0.280 秒) 如果条件包括 B.ber = '0',则预期输出为: b.ber = 0 的结果如下所示:
接收数据
416342016
433004544
...
就我而言,如果它只返回一个条目就足够了:
接收数据
0

该语句嵌入到计算一些吞吐量的较大语句中。

是否可以不执行该语句两次?

最佳答案

这里我们将其更改为 LEFT OUTER JOIN。我们将把 B.ber = '0' 条件移到 FROM 子句中,因为使用外连接,这将给我们带来与 WHERE 子句中的条件不同的结果。

SELECT Sum(B.trblksize) AS RxData
FROM (SELECT C.*
      FROM   referencecoexistence C
      WHERE  `sw_ver` = '0.4'
        AND `lte_n_frames` = '50'
        AND `lte_rb` = '6'
        AND `lte_mcs` = '11'
        AND `lte_p_mw` = '6.000000e-03'
        AND `lte_vmsf_type` = 'BS'
        AND `lte_vmsf_subframes` = '8 9'
        AND `wlan_mcs` = '5'
        AND `wlan_p_mw` = '100'
        AND `channel` = 'A330'
        AND `lte_freq_hz` = '2403000000'
        AND `wlan_freq_hz` = '2412000000'
        AND `wlan_ieee` = '802.11n') AS TableX
  LEFT OUTER JOIN referencecoexistence_ber_lte B
    ON TableX.id = B.id
       AND B.ber = '0'
 GROUP  BY lte_dist_m

现在,当 B.ber 为零时,它将充当内连接。但是,当 B.ber 不为零时,则连接中将缺少内连接结果,但外连接将包含 B 表的所有列的结果,但 TableX 表的所有列的结果为 NULL。因此,这些记录的 B.trblksize 将为 NULL,并且它们的总和将为 NULL。

关于mysql - 不满足条件时 SELECT 语句应返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58269810/

相关文章:

mysql - 在 DATETIME 字段上按月分组

sql - 按已回答所有问题的用户分组

sql - 获取 DB2 中所有角色和授予权限的列表

python - 读取时避免从 MySQL 数据库中多次加载 json.loads

mysql - 从一个表中进行 SELECT,而另一表中的两个条件不为 TRUE。可能的?

mysql - UPDATE 的目标表不可更新

mysql - 具有自定义外键列名称的 Activeadmin 表单

mysql - 有没有办法将一行作为参数传递给 MySQL 函数?

c# - 如何使用 linq 获取最近 10 分钟的记录?

mysql - 使用 mysql 进行日期重叠以进行预订