gpt4 book ai didi

mysql - 在 MySQL 中为子行选择父行单元格值

转载 作者:可可西里 更新时间:2023-11-01 08:09:47 25 4
gpt4 key购买 nike

我正在从 Excel 工作表导入数据,现在我有一个包含父行和子行的表格。子行与父行具有大致相同的列,除了子行在 A 列中为空,这是我的父行主键和子行的外键。

示例数据

 - AI ID | Employee Number | Employee Name
- 1 | 33400 | John
- 2 | NULL | John's Wife
- 3 | NULL | John's Child
- 4 | 43443 | Susan
- 5 | NULL | Susan's Husband

如何用其父行的值填充具有 NULL 的行 2、3、4 Employee Number。

这样Employee Number列就变成了这样

 - 33400
- 33400
- 33400
- 43443
- 43443

注意:更新这是真实世界的场景,因此不需要父行的字段来标识它的子行。不幸的是,上表暗示 employee name 这样做。

实际上识别父子行依赖的是 AI ID 列。当所有行都按 AI ID 排序时,每个子行都属于它上面的第一行,employer number NOT NULL。所以理想情况下,我正在查看执行以下操作的查询:

IF Employee_Number IS NULL
SELECT Employee_Number OF FIRST ROW
WHERE Employee_Number IS NOT NULL AND ROW_ABOVE.AI_ID < CURRENT_ROW.AI_ID

上面那种东西。

最佳答案

SELECT t1.`AI ID`,
t2.`Employee Number`,
t1.`Employee Name`
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.`Employee Name` LIKE CONCAT('%', t2.`Employee Name`, '%')
WHERE t2.`Employee Number` IS NOT NULL;

输出:

enter image description here

此处演示:

Rextester

后期编辑:

看到@Giorgos 的回答让我想知道您是否真的想更新您的表。如果是这样,我的查询可以稍微修改为:

UPDATE yourTable t1
INNER JOIN yourTable t2
ON t1.`Employee Name` LIKE CONCAT('%', t2.`Employee Name`, '%')
SET t1.`Employee Number` = t2.`Employee Number`
WHERE t2.`Employee Number` IS NOT NULL;

关于mysql - 在 MySQL 中为子行选择父行单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42852513/

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