我有一张这样的表
id Name Parent_id Text
1 x 0
2 y 1
3 Z 1
4 A 2
5 B 0
现在,我想根据parent_id使用列名的文本填充列。如果parent_id为0,则文本值将是同一行的名称,而不是id parent_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
有人可以帮助我吗?
答案 0 :(得分:2)
首先,编写一个SELECT语句,返回行以及要分配的值。像这样:
@echo off
setlocal
echo blah | findstr bin > NUL
echo %ERRORLEVEL% or !errorlevel!
for /f %%i in ('cmd /c echo blah') do (
echo %%i | findstr bin > NUL
call echo %%errorlevel%%
)
并非SELECT列表中的所有列都是必需的,但我发现检查结果以确认该语句是正确的有用。
一旦SELECT语句工作,返回要分配给列的新值,将其转换为UPDATE语句。
将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
替换为关键字SELECT ... FROM
,并在UPDATE
子句之前立即添加SET
子句(如果没有&#39,则在语句末尾添加WHERE
子句; ta 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)
答案 1 :(得分:1)
尝试:
map.values().asList()