背景:我正在编写一个查询来比较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)并且可以进行硬编码,因为它们不在任何表中,否则我会加入并分组。我想使用单个查询。
答案 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/