3 mysql inner-join left-join sql-update
我有一张这样的桌子
id Name Parent_id Text
1 x 0
2 y 1
3 Z 1
4 A 2
5 B 0
Run Code Online (Sandbox Code Playgroud)
现在我想根据parent_id 使用列名称的文本填充该列。如果parent_id为0文本值将是同一行的名称而不是idparent_id!= 0它必须找到正确的名称
这是我想要归档的输出
id Name Parent_id Text
1 x 0 x
2 y 1 x
3 z 1 x
4 a 2 y
5 b 0 b
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?
首先,编写一条返回行以及要分配的值的 SELECT 语句。像这样的东西:
SELECT t.id AS t_id
, t.parent_id AS t_parent_id
, t.name AS t_name
, p.id AS p_id
, p.name AS p_name
, t.text AS t_text_old
, IF(t.parent_id=0,t.name,p.name) AS t_text_new
FROM tlt t
LEFT
JOIN tlt p
ON p.id = t.parent_id
Run Code Online (Sandbox Code Playgroud)
并非 SELECT 列表中的所有列都是必需的,但我发现检查结果以确认语句是否正确很有帮助。
一旦 SELECT 语句正常工作,返回要分配给列的新值,请将其转换为 UPDATE 语句。
将 替换SELECT ... FROM为关键字UPDATE,并在子句SET之前添加一个子句WHERE(如果没有子句,则在语句末尾添加子句)WHERE。
UPDATE tlt t
LEFT
JOIN tlt p
ON p.id = t.parent_id
SET t.text = IF(t.parent_id=0,t.name,p.name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5865 次 |
| 最近记录: |