2016-12-20 4 views
0

Допустим, мой запрос возвращает эти строки:MySQL - если второй ID равен нулю, заменить его первым ID

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 

так я могу заказать их Родитель-ID? Тогда это было бы как

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

Короче говоря ... Я хочу, чтобы заменить 0 в Parent-ID с Project-ID .... если это возможно в запросе и без PHP.

+1

Вы действительно хотите изменить результат, или просто изменить порядок? Вы можете использовать 'ORDER BY IF (parent_ID = 0, Project_ID, parent_ID)' – Barmar

ответ

1

Если вы просто хотите, чтобы изменить порядок, но до сих пор показывают 0 родительский ID, вы можете использовать:

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

Удивительный! Это полностью выполнило эту работу, и я могу использовать 0 в качестве оптического изолятора между проектами ... мне нравится! Спасибо чувак. – TZP

0

Это простой запрос UPDATE. Для того, чтобы лучше знать 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 
+0

Мне не разрешено использовать обновление, но спасибо за ответ. – TZP

+0

@TZP: Вы пытаетесь использовать SELECT? –

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); 

добавить ORDER BY из @Barmar

Смежные вопросы