我需要按字段分组,如果有,请填写缺失的信息。
例如,我们有一个 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 |
--------------------------------------------
谢谢。
1条答案
按热度按时间fv2wmkja1#
你得弄清楚“最后”到底是什么意思。您插入的记录没有任何特定的顺序,因此您必须添加自动递增的id或类似的内容
created_at
日期。然后,您可以使用以下方法选择正确的记录:
对于非空部分,必须使用
WHERE description<>''
.