可以将这两个SQL查询更改为1吗?

时间:2012-04-15 00:22:29

标签: mysql

是否可以将这2个查询更改为1?

查询#1:

UPDATE  `pvdownloader`.`posts`
SET  `exists` =  'y'
WHERE source = ANY (SELECT source FROM dbdownloader.posts)
  AND `mangacount` = 0
  AND NOT `exists` = 'm'

查询#2:

UPDATE `pvdownloader`.`posts`
SET  `exists` =  'n'
WHERE `exists` = 'u'
  AND `mangacount` = 0

我假设可以用IF / ELSE制作这样的东西,但我根本无法弄清楚如何使用它:<

1 个答案:

答案 0 :(得分:5)

也许这样的事情会起作用:

update
  pvdownloader.posts
set
  exists =
    case
      when source = any(select source from dbdownloader.posts) and mangacount = 0 and exists != 'm' then 'y'
      when exists = 'u' and mangacount = 0 then 'n'
    end
where 
  (source = any(select source from dbdownloader.posts) and mangacount = 0 and exists != 'm')
  or
  (exists = 'u' and mangacount = 0)
;

正如@MostyMostacho建议的那样,我冒昧地改变你的逻辑,没有双重否定。