Нубский вопрос про MySql
ничго не апдейтитне апдейтит в смысле affected rows = 0
или результат
select * from qs_Goods as gi
inner join
(
select g.GoodId
from qs_Goods g
left join qs_Goods cg on cg.ParentGoodId=g.GoodId and cg.IsDeleted=0
group by g.GoodId
having count(cg.GoodId)=0
) as gids on gids.GoodId=gi.GoodId
where gi.IsHasChildren!=0
остается непустым?
Вроде в мускуле нельзя джоинить селекты. Только таблицы, но могу ошибаться.
не апдейтит в смысле affected rows = 0ага оно самое
запихнул по финалу селект внутренний во временную таблицу и сделал апдейт на where in select from tmp
все зааффектилось, причем на стековерфлоу пишут что на селект внутренний при апдейте агрегирующую функцию можно но там без having расматривается
Вроде в мускуле нельзя джоинить селекты. Только таблицы, но могу ошибаться.синтаксис при этом валидный и запрос проходит.
причем я having выкинул и попробовал count(*) as cnt
и на сабселект вынес во where gids.cnt=0 тажа петрушка, чето какое-то недопонимание у меня похоже как это должно работать
Может просто все IsHasChildren уже =0 ? Если новое и старое значения совпадают, то строка не считается affected
там же set он должен влюбом случае перетереть на update
если скажем есть табличка t1 (a char(1
в ней 100 записей '1','1','1', ... (100 единиц) и если сделать update t1 set a='1' то он 100 заафектит.
100 записей '1','1','1', ... (100 единиц) и если сделать update t1 set a='1' то он 100 заафектит.Вот и нет
а не проще было сделать where not exists (...)
чо, правда? (я правда не знаю, как в мускуле)
For UPDATE statements, the affected-rows value by default is the number of rows actually changed. If you specify the CLIENT_FOUND_ROWS flag to mysql_real_connect when connecting to mysqld, the affected-rows value is the number of rows “found”; that is, matched by the WRE clause.
Оставить комментарий
bav46
update qs_Goods as giinner join
(
select g.GoodId
from qs_Goods g
left join qs_Goods cg on cg.ParentGoodId=g.GoodId and cg.IsDeleted=0
group by g.GoodId
having count(cg.GoodId)=0
) as gids on gids.GoodId=gi.GoodId
set gi.IsHasChildren=0
ничго не апдейтит
хотя подзапрос
select g.GoodId
from qs_Goods g
left join qs_Goods cg on cg.ParentGoodId=g.GoodId and cg.IsDeleted=0
group by g.GoodId
having count(cg.GoodId)=0
не пустые значения дает в чем факап ?