我必须按大于值的日期对视图过滤结果进行查询。
使用该程序,我注意到我没有收到我期望的所有结果。
我进行了一些测试以尝试复制该问题,并且我在嵌套查询中具有相同的行为“爆炸”视图。我必须使用视图,因为我需要一些计算字段,在下面显示的示例中,视图/嵌套查询没有用,因为我删除了所有不必要的字段和连接以使查询更具可读性。
SELECT * FROM
(
SELECT fat_id, fat_date, fat_id_visibility_uo, fat_tipo_doc
FROM rm_fatture
WHERE fat_data_fin = '2999-12-31 00:00:00'
GROUP BY fat_id
) _master
WHERE fat_id_visibility_uo = 113960
AND fat_date >= '2019-12-01';
returns 2 records instead of the 6 expected:
| fat_id | fat_date | fat_id_visibility_uo | fat_tipo_doc |
| 110123 | 2019-12-05 | 113960 | FATTURA IMMEDIATA |
| 110134 | 2019-12-02 | 113960 | FATTURA IMMEDIATA |
如果我在字段“date(fat_date) >= '2019-12-01”上使用日期更改 where 子句,则查询按预期工作并返回所有数据:
SELECT * FROM
(
SELECT fat_id, fat_date, fat_id_visibility_uo, fat_tipo_doc
FROM rm_fatture
WHERE fat_data_fin = '2999-12-31 00:00:00'
GROUP BY fat_id
) _master
WHERE fat_id_visibility_uo = 113960
AND date(fat_date) >= '2019-12-01';
returns:
| fat_id | fat_date | fat_id_visibility_uo | fat_tipo_doc |
| 109846 | 2019-12-31 | 113960 | FATTURA IMMEDIATA |
| 109924 | 2019-12-31 | 113960 | FATTURA IMMEDIATA |
| 110043 | 2019-12-05 | 113960 | FATTURA IMMEDIATA |
| 110119 | 2019-12-05 | 113960 | FATTURA IMMEDIATA |
| 110123 | 2019-12-05 | 113960 | FATTURA IMMEDIATA |
| 110134 | 2019-12-02 | 113960 | FATTURA IMMEDIATA |
如果我按同一字段对嵌套查询进行排序,则选择还会返回正确的记录:
SELECT * FROM
(
SELECT fat_id, fat_date, fat_id_visibility_uo, fat_tipo_doc
FROM rm_fatture
WHERE fat_data_fin = '2999-12-31 00:00:00'
GROUP BY fat_id
ORDER BY fat_date
) _master
WHERE fat_id_visibility_uo = 113960
AND fat_date >= '2019-12-01';
我在 Centos 7 上使用 MariaDB 10.3.18。
我找到了一个解决方案,但老实说,它对我来说看起来像是一个 MariaDB 错误,我想确定原因以避免将来出现问题。
有人对此有解释吗?