如果多个条目具有相同的ID(tag_num),我希望列相同。例如,如果一行可能具有说明,而另一行为null,但两者具有相同的ID(tag_num),我希望将说明也复制到null行。
之前:
--------------------------------------
| tag_num | description | category |
--------------------------------------
| 1 | Description A | A |
| 1 | | |
| 2 | Description B | B |
| 2 | Description B | B |
| 2 | Description B | |
| 3 | Description C | |
| 3 | | |
--------------------------------------
字符串
预期输出:
--------------------------------------
| tag_num | description | category |
--------------------------------------
| 1 | Description A | A |
| 1 | Description A | A |
| 2 | Description B | B |
| 2 | Description B | B |
| 2 | Description B | B |
| 3 | Description C | |
| 3 | Description C | |
--------------------------------------
型
这是我到目前为止(为mySQL)编写的SQL,但我被难倒了:
SELECT * FROM table
WHERE tag_num IN (
SELECT tag_num
FROM table
GROUP BY tag_num
-- update empty columns here where columns are empty
)
型
2条答案
按热度按时间laawzig21#
假设你使用的是Mysql 8+,一个窗口化的聚合是一个可能的解决方案:
字符串
llycmphe2#
如果你可以使用解析函数,那么就使用它们(正如Stu所说的;尽管如此,因为所有的值都应该是一样的,也许你不必 * 检查 * 某个值是否为NULL):
字符串
或者,在子查询中查找目标值并将其连接到源数据。此选项不如以前好,因为您必须查询同一个表两次,因此如果处理大型表,性能可能会受到影响;但是,您不会注意到小型表的任何差异。
型