3

我有一个包含以下列的表格:

  • subid - 资源的 ID
  • authorid - 作者的 ID
  • 排序 - 引文中作者的顺序

对于用户可以提交资源并引用多个作者的应用程序。作者可以在提交的文章中引用主要作者和次要作者,而且通常会这样做。

有一种情况,用户(称他为用户 111)提交了所有条目,将他自己列为主要作者,将实际作者列为次要作者。不幸的是,那个人已经离开了这个项目,所以我必须解决这个问题(我必须纯粹在 sql 中完成)。

我试图弄清楚如何构建查询来执行以下操作:

  • 查找所有条目
  • subid 值在表中多次出现的位置
  • 其中至少一个授权值是 111
  • 其中 111 的排序大于任何不是 111 的用户的排序并更新它们
  • not(111) 作者的排序为“0”
  • 并且 111 作者订购了“1”
4

1 回答 1

1

试试这个解决方案:

UPDATE tbl a
INNER JOIN
    (
        SELECT subid
        FROM tbl
        GROUP BY subid
        HAVING COUNT(*) > 1 AND SUM(author_id = 111) > 0
    ) b ON a.subid = b.subid
SET a.ordering = (a.author_id = 111)

替换tbl为您的实际表名。

于 2012-07-04T23:47:28.990 回答