如何在子查询中使用主查询中的信息来更新数据?

问题描述 投票:0回答:0

这个问题可能很难理解,让我准确地告诉你我想做什么:

我在多语言网站上处理文章,用户可以更新内容。

我的数据库的大致结构如下所示:

articles

  • id

article_contents

  • id
  • 文章_id(FK)
  • 内容
  • 版本

如果新内容还是草稿,

version
就是
null
。一旦草稿经过主持人验证,它就会成为最终版本,并针对给定的
version
和给定的
article_id
采用下一个可用的
lang

我尝试编写的 SQL 请求如下所示:

UPDATE article_contents
SET version=(
    SELECT MAX(version)
    FROM article_contents
    WHERE article_id=SAME_AS_THE_ONE_IN_THE_MAIN_QUERY
    AND lang=SAME_AS_THE_ONE_IN_THE_MAIN_QUERY
) + 1
WHERE id=:id; 

我可以用什么来代替

SAME_AS_THE_ONE_IN_THE_MAIN_QUERY
,或者有没有更干净的方法来做到这一点?

sql subquery
© www.soinside.com 2019 - 2024. All rights reserved.