MySQL - 如果第二个ID等于零,则将其替换为第一个ID

时间:2016-12-20 08:54:18

标签: mysql

假设我的查询返回以下行:

Project-ID | Parent-ID
1  | 0
2  | 1
15 | 0
16 | 15
17 | 0
18 | 0
19 | 15

项目2是项目1的翻译。 项目16和19是项目15的翻译。到目前为止......非常好。唯一的问题是,我有500个项目,大约有320个翻译,我无法正确订购。有些翻译远离Project-ID。

是否可以将结果更改为

Project-ID | Parent-ID
1  | 1
2  | 1
15 | 15
16 | 15
17 | 17
18 | 18
19 | 15

所以我可以通过Parent-ID订购它们?那就像

Project-ID | Parent-ID
1  | 1
2  | 1
15 | 15
16 | 15
19 | 15
17 | 17
18 | 18

长话短说...我希望将Parent-ID中的0替换为Project-ID ....如果在查询中并且没有PHP则可以。

3 个答案:

答案 0 :(得分:1)

使用类似的东西

SELECT     
 Project-ID,
 IF(Parent-ID = 0 , Project-ID,Parent-ID) AS Parent-ID
FROM yourTable
ORDER BY IF(parent_ID = 0, Project_ID, parent_ID);

从@Barmar添加ORDER BY

答案 1 :(得分:1)

如果您只想更改排序,但仍显示0父ID,则可以使用:

ORDER BY IF(parent_ID = 0, Project_ID, parent_ID)

答案 2 :(得分:0)

这是一个简单的UPDATE查询。要了解更好的更新,请转到here

试试这个:

UPDATE yourtable
SET Parent-Id = Project-ID
WHERE Parent-Id = 0

如果需要,只需更改显示数据(不更改Parent-ID),您可以使用SELECT语句执行此简单CASE查询:

SELECT Project-ID,
CASE
    WHEN Parent-ID = 0 THEN Project-ID
    ELSE Parent-ID
END
FROM yourtable