mysql按填充间距分组

u1ehiz5o  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(298)

我需要按字段分组,如果有,请填写缺失的信息。
例如,我们有一个 test 表格:

CREATE TEMPORARY TABLE `test` (
    `name` VARCHAR(100), `description` VARCHAR(100)
);

对于此表,我们有以下记录:

INSERT INTO `test` (`name`, `description`, `email`)
VALUES ('John', '', ''),
VALUES ('John', 'Description #1', ''),
VALUES ('John', 'Description #2', ''),
VALUES ('John', '', 'john@example.com'),
VALUES ('John', '', '');

我需要选择此表中按分组的所有条目 name 填补空白,比如 description (在这种情况下,应该使用“description#2”,因为它是 description . 同样的道理 email ,它应该返回'john@example.com'.
我应该如何选择这些值?ps:实际的表有几个列,所以最好不要修改 SELECT 声明。
我当前的选择是:

SELECT `name`, `description` FROM `test` GROUP BY `name`;

问题是它总是使用第一次出现的值。我需要根据最新的非空插入“合并”所有值。
每一列最终可能会使用来自不同条目的值。
预期产量:

____________________________________________
| name | description    | email            |
--------------------------------------------
| John | Description #2 | john@example.com |
--------------------------------------------

谢谢。

fv2wmkja

fv2wmkja1#

你得弄清楚“最后”到底是什么意思。您插入的记录没有任何特定的顺序,因此您必须添加自动递增的id或类似的内容 created_at 日期。
然后,您可以使用以下方法选择正确的记录:

SELECT `name`, `description`
    FROM `test`
GROUP BY `name`
  HAVING `created_at` = MAX(`created_at`)

对于非空部分,必须使用 WHERE description<>'' .

相关问题