3

次の列のテーブルがあります。

  • subid-リソースのID
  • authorid-作成者のID
  • 順序付け-引用内の著者の順序

ユーザーがリソースを送信し、複数の著者を引用できるアプリケーションの場合。著者は、提出物の中で一次および二次著者を引用することができ、通常はそうします。

ユーザー(ユーザー111と呼びます)が、自分をプライマリとして、実際の作成者をセカンダリとしてリストするすべてのエントリを送信した場合が1つあります。残念ながら、その人はプロジェクトを離れたので、これを修正するのは私に任されました(私は純粋にSQLでそれをしなければなりません)。

次のことを行うためのクエリを作成する方法を理解しようとしています。

  • すべてのエントリを検索
  • subid値がテーブルに複数回表示される場合
  • ここで、authorid値の少なくとも1つは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 に答える