2013-07-04 5 views
0

Я хочу обновить строки из сценария_id = 1 из scene_id = 7, где указано имя. Разница между script_id не является постоянной.обновить таблицу, используя ту же таблицу

id|scenario_id|status|name 
1 |1   |Passed|testcase_1 
2 |1   |Passed|testcase_2 
3 |1   |Failed|willPassInNextRun 
4 |7   |Passed|testcase_1 
5 |7   |Passed|willPassInNextRun 

после таблицы обновления должен выглядеть, как показано ниже

id|scenario_id|status|name 
1 |1   |Passed|testcase_1 
2 |1   |Passed|testcase_2 
3 |1   |Passed|willPassInNextRun 
4 |7   |Passed|testcase_1 
5 |7   |Passed|willPassInNextRun 
+0

В результате вы получаете хотеть ? Потому что я не совсем понимаю. – kmas

+0

Можете ли вы написать запрос SELECT, который возвращает правильный результат? – Strawberry

+0

* Что нужно обновить? Как таблица должна выглядеть после? –

ответ

0

Попробуйте это,

update table t1, table t2 
set t1.status=t2.status 
where t2.scenario_id=7 and t1.scenario_id=1 
and t1.name=t2.name 
and t1.status!=t2.status; 
1

Чтобы заставить его работать также в SQLite, используйте стандартный SQL и посмотреть новое значение с коррелированный подзапрос:

UPDATE MyTable 
SET status = COALESCE((SELECT status 
         FROM MyTable AS T2 
         WHERE scenario_id = 7 
         AND T2.name = MyTable.name), 
         status) 
WHERE scenario_id = 1