我有一个像这样定义的MySQL视图:
SELECT
group_concat(`h`.`name` SEPARATOR ',') AS `hosts`,
`m`.`id` AS `slo_application_id`,
`s`.`application` AS `application`,
`s`.`slo_conformance` AS `slo_conformance`,
`s`.`hourly_conformance` AS `hourly_conformance`,
`s`.`date` AS `date`,
`m`.`slo_profile` AS `slo_profile`
FROM
(
(
`inv_host_slo` `s`
JOIN `slo_host_map` `m` ON (
(
`s`.`application` = `m`.`application_string`
)
)
)
LEFT JOIN `inv_host` `h` ON ((`m`.`host_id` = `h`.`id`))
)
GROUP BY
`s`.`application`
这很简单,但是当我在date
字段上用WHERE查询视图时,我注意到了一些奇怪的行为。如果我在实际SQL查询中的WHERE s.date = '2013-10-22'
语句之前插入GROUP BY
,我会得到2425条记录,但如果我直接在视图中执行此操作:
SELECT
*
FROM
v_host_slo_conformance
WHERE
date = '2013-10-22'
我只收到307条记录。
这在我的开发数据库中没有发生,唯一的区别是dev运行5.5.15,而生产运行5.5.14。这是一个基于版本差异或我忽略的东西的错误吗?
答案 0 :(得分:1)
考虑一下步骤。
这给你一个结果集。
您使用的两个完全不同的结果集,显然会产生两种不同的结果。