gpt4 book ai didi

mysql - 将具有不同值的行合并为一行

转载 作者:行者123 更新时间:2023-11-29 07:24:49 24 4
gpt4 key购买 nike

我正在使用的查询

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 |

如果我使用 GROUP BY,我得到的返回值只是第一行的值,而不是另一行的值

| id_video | titulo | desc | send | host | upload_id |
|----------|--------|------|------|------|-----------|
| 6 | Title | Desc | 0 | cnn | 0 |

SQLFiddle

最佳答案

这应该可以完成工作:

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 函数以仅选择列 host 和 upload_id 的最大值。

返回结果:

+----------+--------+------+------+------+--------------+
| id_video | titulo | desc | send | host | upload_id |
+----------+--------+------+------+------+--------------+
| 6 | Title | Desc | 0 | cnn | sHGN-tSNvJYs |
+----------+--------+------+------+------+--------------+

关于mysql - 将具有不同值的行合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com