簡體   English   中英

如何:查找並更新一列中的值顯示多次的所有條目

[英]How to: Find and update all the entries where the value in one column shows up more than once

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

  • subid - 資源的id
  • authorid - 作者的身份
  • 排序 - 引用中作者的順序

對於用戶可以提交資源並引用多位作者的應用程序。 作者可以在提交作品中引用主要和次要作者,通常也會這樣做。

存在一種情況,其中用戶(稱為用戶111)提交所有條目,其將自己列為主要作者和實際作者作為次要作者。 不幸的是,那個人已經離開了這個項目,所以它已經讓我解決了這個問題(我必須在sql中完成它)。

我試圖弄清楚如何構建一個查詢來執行以下操作:

  • 查找所有條目
  • 其中subid值在表中顯示多次
  • 其中至少有一個authorid值是111
  • 其中111的排序大於任何非111的用戶的排序並更新它們
  • not(111)作者的排序為'0'
  • 並且111作者訂購'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替換為您的實際表名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM