首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -如果第二个ID等于零,用第一个ID替换它

MySQL -如果第二个ID等于零,用第一个ID替换它
EN

Stack Overflow用户
提问于 2016-12-20 08:54:17
回答 3查看 70关注 0票数 0

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

代码语言:javascript
复制
Project-ID | Parent-ID
1  | 0
2  | 1
15 | 0
16 | 15
17 | 0
18 | 0
19 | 15

项目2是项目1的翻译,项目16和19是项目15的翻译,所以far...so很好。唯一的问题是,我得到了大约500个项目,大约320种翻译,我无法正确地订购它们。有些翻译离Project很远。

是否可以将结果更改为

代码语言:javascript
复制
Project-ID | Parent-ID
1  | 1
2  | 1
15 | 15
16 | 15
17 | 17
18 | 18
19 | 15

这样我就可以按父母身份证订购了?那就就像

代码语言:javascript
复制
Project-ID | Parent-ID
1  | 1
2  | 1
15 | 15
16 | 15
19 | 15
17 | 17
18 | 18

长话短说.我想用Project替换0 in父ID.如果可以的话,在查询中不使用PHP。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-20 09:19:21

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

代码语言:javascript
复制
ORDER BY IF(parent_ID = 0, Project_ID, parent_ID)
票数 1
EN

Stack Overflow用户

发布于 2016-12-20 08:57:17

用这样的东西

代码语言:javascript
复制
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添加订单

票数 1
EN

Stack Overflow用户

发布于 2016-12-20 08:56:24

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

试试这个:

代码语言:javascript
复制
UPDATE yourtable
SET Parent-Id = Project-ID
WHERE Parent-Id = 0

如果需要,只需更改显示数据(没有更改父-ID),就可以使用SELECT语句执行这个简单的CASE查询:

代码语言:javascript
复制
SELECT Project-ID,
CASE
    WHEN Parent-ID = 0 THEN Project-ID
    ELSE Parent-ID
END
FROM yourtable
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41238193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档