如何:查找并更新一列中的值显示多次的所有条目

时间:2012-07-04 22:38:47

标签: mysql sql

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

  • subid - 资源的ID
  • authorid - 作者的身份
  • 订购 - 引用中的作者订单

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

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

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

  • 查找所有条目
  • 其中subid值在表格中显示多次
  • 其中至少有一个authorid值为111
  • 其中111的排序大于任何非111的用户的排序 &安培;更新它们
  • not(111)作者订购'0'
  • 并且111作者订购了'1'

1 个答案:

答案 0 :(得分: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替换为您的实际表名。