特定の条件とカウンターを持つテーブルから列を更新します(予期しない結果)

Navid_gh

この条件のクエリは何ですか?カウンターで列を更新したいのですが、カウンターでgroupbyをリセットする必要があります。例を挙げて説明しましょう。

   Data set:
  +----+------------+----------+------+-------+
  | id | content_id | title_id | path | order |
  +----+------------+----------+------+-------+
  |  1 |          1 |       20 | NJ   |     0 |
  |  2 |          1 |       20 | CA   |     0 |
  |  3 |          1 |       20 | LA   |     0 |
  |  4 |          1 |       20 | MM   |     0 |
  |  5 |          1 |       30 | AX   |     0 |
  |  6 |          1 |       30 | ER   |     0 |
  |  7 |          2 |       10 | NJ   |     0 |
  |  8 |          2 |       10 | CA   |     0 |
  |  9 |          2 |       20 | AX   |     0 |
  | 10 |          2 |       20 | CA   |     0 |
  | 11 |          2 |       30 | FF   |     0 |
  | 12 |          2 |       30 | EE   |     0 |
  +----+------------+----------+------+-------+

  Desired result set:
  +----+------------+----------+------+-------+
  | id | content_id | title_id | path | order |
  +----+------------+----------+------+-------+
  |  1 |          1 |       20 | NJ   |     1 |
  |  2 |          1 |       20 | CA   |     1 |
  |  3 |          1 |       20 | LA   |     1 |
  |  4 |          1 |       20 | MM   |     1 |
  |  5 |          1 |       30 | AX   |     2 |
  |  6 |          1 |       30 | ER   |     2 |
  |  7 |          2 |       10 | NJ   |     1 |
  |  8 |          2 |       10 | CA   |     1 |
  |  9 |          2 |       20 | AX   |     2 |
  | 10 |          2 |       20 | CA   |     2 |
  | 11 |          2 |       30 | FF   |     3 |
  | 12 |          2 |       30 | EE   |     3 |
  +----+------------+----------+------+-------+

以下のクエリを使用していますが、「コンテンツ」を変更しても「順序」をリセットできません。

set @counter = 0;
update paper as t, (select (@counter := @counter+1) as cou, t2.title_id
from paper as t2 group by t2.title_id) as t3 
set t.order = t3.cou where t.title_id = t3.title_id;

そして私も以下のクエリを使用しましたが成功しませんでした:

set @counter = 0;
update paper as t, (select (@counter := @counter+1) as cou, t2.title_id 
from paper as t2 group by t2.title_id, t2.content_id) as t3
set t.order = t3.cou where t.title_id = t3.title_id;

編集:テーブルスキーマをsqlfiddleに追加しました。リンク(ありがとう@Payam)

イチゴ

これが1つの方法ですが、もっとエレガントな解決策があるかもしれません...

 UPDATE paper a
   JOIN 
      ( 

        SELECT p.id 
             , p.content_id 
             , p.title_id 
             , p.path 
             , IF(@prev_content = content_id,
                           IF(@prev_title = title_id,@i:=@i,@i:=@i+1)
                  ,@i:=1) new_order
             , @prev_title := title_id
             , @prev_content := content_id 
          FROM paper p
             , (SELECT @i:=0,@prev_content:=NULL,@prev_title:=NULL) vars 
         ORDER 
            BY id

      ) b
     ON b.id = a.id
    SET a.order = b.new_order;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

特定の条件とカウンターを持つテーブルから列を更新します(予期しない結果)

分類Dev

SQLの別のテーブルからテーブルを更新すると、予期しない結果が発生します

分類Dev

3つのテーブルを持つJOINおよびGROUP_CONCATからの予期しない結果

分類Dev

SQLスタックで、COUNTの結果からテーブル列を更新しようとしています

分類Dev

3つの異なるテーブルから特定の列をカウントしようとしています

分類Dev

他のクエリの結果としてテーブル名を持つselectステートメントからデータを取得します

分類Dev

2つのテーブルの行からのカウントでテーブルの列を更新します

分類Dev

SQLの結合クエリを使用して、3番目のテーブルを持つ2つの異なるテーブルから2つの列のカウントを取得します

分類Dev

2つの別のテーブルからの結果をカウントしてテーブルを更新する

分類Dev

特定の値のインスタンスの数をカウントし、結果を別のテーブルと結合します

分類Dev

カウント条件の結果をOracleSQLテーブルの個別の列に表示します

分類Dev

結合条件のない2つのテーブルt-sqlからデータを選択します

分類Dev

カウントをGroupbyで異なるテーブルから1つの結果セットに結合します

分類Dev

ADFテーブル-特定の値を持つ行をカウントします

分類Dev

1つの列から複数のデータを選択し、結合結果を別のテーブルに更新します

分類Dev

データベース内の1つのテーブルから、異なる列を持つ別のテーブルに特定の行を挿入します

分類Dev

VARCHAR列を持つ2つのテーブルの和集合を取る場合、結果のクエリはタイプINT?を予期します。

分類Dev

SQL Serverで複数の左結合を実行しようとしていますが、結合されているテーブルに値が見つからない場合、予期しない結果が発生します

分類Dev

2つの結合を持つ最初のテーブルからの結果のみを返します

分類Dev

Symfony2 + Doctrine、結合テーブルの結果をカウントしようとしています

分類Dev

異なる列から、同じテーブルの複数のカウントを結合しますか?

分類Dev

SQL:2つの異なるテーブルから2つの異なる列をカウントします

分類Dev

2つのテーブルを比較し、結果に基づいて列を更新しますか?

分類Dev

他のテーブルのカウント結果から新しいフィールドを表示する

分類Dev

SQL:CTE条件からテーブル内の2つの異なる列を更新しています

分類Dev

同様の条件を持つ2つのテーブルのmysql結果をカウントする方法は?

分類Dev

2 つのテーブルで場所のインスタンスをカウントし、結果の 2 つの列に保存します

分類Dev

テーブルといくつかの条件から列のデータ型を取得します

分類Dev

複数の条件を持つ他のテーブルのデータでテーブルを更新しますか?

Related 関連記事

  1. 1

    特定の条件とカウンターを持つテーブルから列を更新します(予期しない結果)

  2. 2

    SQLの別のテーブルからテーブルを更新すると、予期しない結果が発生します

  3. 3

    3つのテーブルを持つJOINおよびGROUP_CONCATからの予期しない結果

  4. 4

    SQLスタックで、COUNTの結果からテーブル列を更新しようとしています

  5. 5

    3つの異なるテーブルから特定の列をカウントしようとしています

  6. 6

    他のクエリの結果としてテーブル名を持つselectステートメントからデータを取得します

  7. 7

    2つのテーブルの行からのカウントでテーブルの列を更新します

  8. 8

    SQLの結合クエリを使用して、3番目のテーブルを持つ2つの異なるテーブルから2つの列のカウントを取得します

  9. 9

    2つの別のテーブルからの結果をカウントしてテーブルを更新する

  10. 10

    特定の値のインスタンスの数をカウントし、結果を別のテーブルと結合します

  11. 11

    カウント条件の結果をOracleSQLテーブルの個別の列に表示します

  12. 12

    結合条件のない2つのテーブルt-sqlからデータを選択します

  13. 13

    カウントをGroupbyで異なるテーブルから1つの結果セットに結合します

  14. 14

    ADFテーブル-特定の値を持つ行をカウントします

  15. 15

    1つの列から複数のデータを選択し、結合結果を別のテーブルに更新します

  16. 16

    データベース内の1つのテーブルから、異なる列を持つ別のテーブルに特定の行を挿入します

  17. 17

    VARCHAR列を持つ2つのテーブルの和集合を取る場合、結果のクエリはタイプINT?を予期します。

  18. 18

    SQL Serverで複数の左結合を実行しようとしていますが、結合されているテーブルに値が見つからない場合、予期しない結果が発生します

  19. 19

    2つの結合を持つ最初のテーブルからの結果のみを返します

  20. 20

    Symfony2 + Doctrine、結合テーブルの結果をカウントしようとしています

  21. 21

    異なる列から、同じテーブルの複数のカウントを結合しますか?

  22. 22

    SQL:2つの異なるテーブルから2つの異なる列をカウントします

  23. 23

    2つのテーブルを比較し、結果に基づいて列を更新しますか?

  24. 24

    他のテーブルのカウント結果から新しいフィールドを表示する

  25. 25

    SQL:CTE条件からテーブル内の2つの異なる列を更新しています

  26. 26

    同様の条件を持つ2つのテーブルのmysql結果をカウントする方法は?

  27. 27

    2 つのテーブルで場所のインスタンスをカウントし、結果の 2 つの列に保存します

  28. 28

    テーブルといくつかの条件から列のデータ型を取得します

  29. 29

    複数の条件を持つ他のテーブルのデータでテーブルを更新しますか?

ホットタグ

アーカイブ