如何填充MySQL查询中的缺失值

时间:2015-01-15 00:31:52

标签: mysql

背景:我正在编写一个查询来比较actual and ideal growth data for children。孩子们每年看一次doc,doc测量,积分优于典型的增长曲线。问题是我使用的图形组件需要固定数量的数据点。将数据丢失为NULL没有问题,但它们必须存在。

数据我得到了:

age weight/kg
-----------------
2   10
3   11
6   20

预期:

age weight/kg
-----------------
2   10
3   11
4   NULL
5   NULL
6   20

所需的年龄值是固定的(本例中为2-6)并且可以进行硬编码,因为它们不在任何表中,否则我会加入并分组。我想使用单个查询。

2 个答案:

答案 0 :(得分:2)

如果您想要查询可以在0到99之间生成序列,那么这是查询。您可以从表格中的子查询中获得权重。我在这里给出了2到6的范围。

SELECT
    SEQ.SeqValue AS age,
    (SELECT weight FROM your_table WHERE age = SEQ.SeqValue) AS "weight/kg"
FROM
(
SELECT
    (TENS.SeqValue + ONES.SeqValue) SeqValue
FROM
    (
    SELECT 0  SeqValue
    UNION ALL
    SELECT 1 SeqValue
    UNION ALL
    SELECT 2 SeqValue
    UNION ALL
    SELECT 3 SeqValue
    UNION ALL
    SELECT 4 SeqValue
    UNION ALL
    SELECT 5 SeqValue
    UNION ALL
    SELECT 6 SeqValue
    UNION ALL
    SELECT 7 SeqValue
    UNION ALL
    SELECT 8 SeqValue
    UNION ALL
    SELECT 9 SeqValue
    ) ONES
CROSS JOIN
    (
    SELECT 0 SeqValue
    UNION ALL
    SELECT 10 SeqValue
    UNION ALL
    SELECT 20 SeqValue
    UNION ALL
    SELECT 30 SeqValue
    UNION ALL
    SELECT 40 SeqValue
    UNION ALL
    SELECT 50 SeqValue
    UNION ALL
    SELECT 60 SeqValue
    UNION ALL
    SELECT 70 SeqValue
    UNION ALL
    SELECT 80 SeqValue
    UNION ALL
    SELECT 90 SeqValue
    ) TENS
) SEQ
WHERE SEQ.SeqValue BETWEEN 2 AND 6

答案 1 :(得分:0)

在查询中使用IFNULL()为其分配值http://www.mysqltutorial.org/mysql-ifnull/