Mysql 将具有不同值的行合并到一行中
我正在使用的查询Mysql 将具有不同值的行合并到一行中,mysql,sql,mariadb,Mysql,Sql,Mariadb,我正在使用的查询 SELECT v.*, if( up.upload_key = 'send', up.upload_value, 0 ) AS send, if( up.upload_key = 'host', up.upload_value, 0 ) AS host, if( up.upload_key = 'upload_id', up.upload_value, 0 ) AS upload_id FROM TableInit v JOIN TableName
SELECT v.*, if( up.upload_key = 'send', up.upload_value, 0 ) AS send,
if( up.upload_key = 'host', up.upload_value, 0 ) AS host,
if( up.upload_key = 'upload_id', up.upload_value, 0 ) AS upload_id
FROM TableInit v JOIN TableName up ON up.video_id = v.id_video;
查询的返回结果如下
| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|--------------|
| 6 | Title | Desc | 0 | cnn | 0 |
| 6 | Title | Desc | 0 | 0 | 0 |
| 6 | Title | Desc | 0 | 0 | sHGN-tSNvJYs |
我需要的回报是:
| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|-------------|
| 6 | Title | Desc | 0 | cnn |sHGN-tSNvJYs |
+----------+--------+------+------+------+--------------+
| id_video | titulo | desc | send | host | upload_id |
+----------+--------+------+------+------+--------------+
| 6 | Title | Desc | 0 | cnn | sHGN-tSNvJYs |
+----------+--------+------+------+------+--------------+
如果使用GROUPBY,则返回值仅为第一行的值,而不是另一行的值
| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|-----------|
| 6 | Title | Desc | 0 | cnn | 0 |
这应该可以完成以下工作:
SELECT v.*, if( up.upload_key = 'send', up.upload_value, 0 ) AS send,
MAX(if( up.upload_key = 'host', up.upload_value, null )) AS host,
MAX(if( up.upload_key = 'upload_id', up.upload_value, null )) AS upload_id
FROM TableInit v JOIN TableName up ON up.video_id = v.id_video GROUP BY id_video;
我刚刚添加了MAX
函数,以仅选择主机和上载id列的最大值
返回的结果:
| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|-------------|
| 6 | Title | Desc | 0 | cnn |sHGN-tSNvJYs |
+----------+--------+------+------+------+--------------+
| id_video | titulo | desc | send | host | upload_id |
+----------+--------+------+------+------+--------------+
| 6 | Title | Desc | 0 | cnn | sHGN-tSNvJYs |
+----------+--------+------+------+------+--------------+
这看起来简单吗?没有人有解决办法?