如果不满足条件,如何使以下 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/