【发布时间】:2018-06-10 13:30:20
【问题描述】:
我正在尝试根据name 列中的值从value 列中选择值。
例如:
mysql> select name, value from rss_feed_property_value where rss_feed_id = 31;
+-------------+---------------+
| name | value |
+-------------+---------------+
| High | 45 |
| Description | Rain And Snow |
| Low | 25 |
| Day | Fri |
| Date | 29 Dec 2017 |
+-------------+---------------+
5 rows in set (0.00 sec)
我几乎通过以下查询实现了这一点:
select
if (rfpv.name = 'Date', rfpv.value, null) as `Date`,
if (rfpv.name = 'High', rfpv.value, null) as `High`,
if (rfpv.name = 'Low', rfpv.value, null) as `Low`,
if (rfpv.name = 'Description', rfpv.value, null) as `Description`
from rss_feed rf
join rss_feed_definition rfd on rf.rss_feed_definition_id = rfd.id
join rss_feed_property_value rfpv on rfpv.rss_feed_id = rf.id
where rfd.type = 'weather'
and rf.id = 31
order by rf.id;
产生以下输出:
+-------------+------+------+---------------+
| Date | High | Low | Description |
+-------------+------+------+---------------+
| NULL | 45 | NULL | NULL |
| NULL | NULL | NULL | Rain And Snow |
| NULL | NULL | 25 | NULL |
| NULL | NULL | NULL | NULL |
| 29 Dec 2017 | NULL | NULL | NULL |
+-------------+------+------+---------------+
5 rows in set (0.00 sec)
我现在如何通过忽略 null 值以仅保留一行来展平上述内容,如下所示:
+-------------+------+------+---------------+
| Date | High | Low | Description |
+-------------+------+------+---------------+
| 29 Dec 2017 | 45 | 25 | Rain and Snow |
+-------------+------+------+---------------+
【问题讨论】:
标签: mysql sql aggregation