質問編集履歴

4

タイトルおよび内容追記

2021/10/04 11:45

投稿

entaro12345
entaro12345

スコア75

test CHANGED
@@ -1 +1 @@
1
- [MySQL]特定のグループで重複しているデータのみを除外したい
1
+ [MySQL]特定のグループで重複しているデータのみを除外して取得したい
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  MySQLを使用しています。
6
6
 
7
- 特定のカラムが重複しているデータを除したいのですが、
7
+ 特定のカラムが重複しているデータを除て取得(select)したいのですが、
8
8
 
9
9
  単純なdistinctやgroup byでは厳しいと判断してご質問させていただきます。
10
10
 

3

追記・整理

2021/10/04 11:44

投稿

entaro12345
entaro12345

スコア75

test CHANGED
File without changes
test CHANGED
@@ -7,32 +7,6 @@
7
7
  特定のカラムが重複しているデータを削除したいのですが、
8
8
 
9
9
  単純なdistinctやgroup byでは厳しいと判断してご質問させていただきます。
10
-
11
-
12
-
13
- 下記のようなデータがあったとして、
14
-
15
- 取得したいデータは下記になります。
16
-
17
- |列1|列2|列3|列4|列5|
18
-
19
- |:--|:--:|--:|--:|--:|
20
-
21
- |A|1|1|1|01|
22
-
23
- |A|1|2|1|01|
24
-
25
- |A|1|3|1|01|
26
-
27
- |C|1|1|1|03|
28
-
29
- |C|1|3|1|03|
30
-
31
-
32
-
33
- 列2~4が同一のものを除外したいです。
34
-
35
- 単純にgroup byすると列1がCのデータも除外対象となるため、悩んでおります。
36
10
 
37
11
 
38
12
 
@@ -58,9 +32,47 @@
58
32
 
59
33
  |C|1|3|1|03|
60
34
 
35
+ |D|1|1|1|04|
36
+
37
+ |E|1|1|1|05|
38
+
39
+ |E|1|2|1|05|
40
+
41
+ |E|1|3|1|05|
42
+
43
+ |E|1|4|1|05|
44
+
45
+ |E|1|5|1|05|
61
46
 
62
47
 
48
+
63
- 追記①:
49
+ ■取得したいデータ
50
+
51
+ |列1|列2|列3|列4|列5|
52
+
53
+ |:--|:--:|--:|--:|--:|
54
+
55
+ |A|1|1|1|01|
56
+
57
+ |A|1|2|1|01|
58
+
59
+ |A|1|3|1|01|
60
+
61
+ |C|1|1|1|03|
62
+
63
+ |C|1|3|1|03|
64
+
65
+ |D|1|1|1|04|
66
+
67
+ |E|1|4|1|05|
68
+
69
+ |E|1|5|1|05|
70
+
71
+
72
+
73
+ 列2~4が同一のものを除外したいです。
74
+
75
+
64
76
 
65
77
  列1は、商品区分を意味しています
66
78
 
@@ -72,23 +84,7 @@
72
84
 
73
85
  列5は、搬入コードを意味しています
74
86
 
75
- 商品名、商品コード、価格が同一のものを除外したいのですが、
76
87
 
77
- 搬入コードごとにグループ化をしたいです。
78
-
79
- 搬入コードが別であれば別のデータとして扱って、取得(select)したいです。
80
-
81
-
82
-
83
- ※列2~4が同一であれば除外という感じでselectしたいです。
84
-
85
-  →列1:Cは列3[商品コード]=2がないため除外対象ではなくしたいです。
86
-
87
-
88
-
89
- 追記②:
90
-
91
- 端的に申しますと下記のデータで一グループと考えて合致するデータがあるものを除外したいです。
92
88
 
93
89
  X 1 1 1 XX
94
90
 
@@ -98,7 +94,9 @@
98
94
 
99
95
  ※X部分は可変なデータになります。
100
96
 
97
+
98
+
101
-  ここで上記3レコードを一つの塊とております。
99
+ ↑↑列1=CはC 1 2 1 XXがなため、除外としたくないです。
102
100
 
103
101
 
104
102
 

2

追記2

2021/10/04 08:42

投稿

entaro12345
entaro12345

スコア75

test CHANGED
File without changes
test CHANGED
@@ -33,12 +33,6 @@
33
33
  列2~4が同一のものを除外したいです。
34
34
 
35
35
  単純にgroup byすると列1がCのデータも除外対象となるため、悩んでおります。
36
-
37
-
38
-
39
- 除外か否かのキーとしては列5となってます。
40
-
41
- 列2~4がグループとして重複データを除外したいです。
42
36
 
43
37
 
44
38
 
@@ -92,6 +86,22 @@
92
86
 
93
87
 
94
88
 
89
+ 追記②:
90
+
91
+ 端的に申しますと下記のデータで一グループと考えて合致するデータがあるものを除外したいです。
92
+
93
+ X 1 1 1 XX
94
+
95
+ X 1 2 1 XX
96
+
97
+ X 1 3 1 XX
98
+
99
+ ※X部分は可変なデータになります。
100
+
101
+  ここでいうと上記3レコードを一つの塊としております。
102
+
103
+
104
+
95
105
  説明不足で申し訳ありませんが、お力を貸してください。
96
106
 
97
107
 

1

各種追記

2021/10/04 08:30

投稿

entaro12345
entaro12345

スコア75

test CHANGED
File without changes
test CHANGED
@@ -66,6 +66,32 @@
66
66
 
67
67
 
68
68
 
69
+ 追記①:
70
+
71
+ 列1は、商品区分を意味しています
72
+
73
+ 列2は、商品名を意味しています
74
+
75
+ 列3は、商品コードを意味しています
76
+
77
+ 列4は、価格を意味しています
78
+
79
+ 列5は、搬入コードを意味しています
80
+
81
+ 商品名、商品コード、価格が同一のものを除外したいのですが、
82
+
83
+ 搬入コードごとにグループ化をしたいです。
84
+
85
+ 搬入コードが別であれば別のデータとして扱って、取得(select)したいです。
86
+
87
+
88
+
89
+ ※列2~4が同一であれば除外という感じでselectしたいです。
90
+
91
+  →列1:Cは列3[商品コード]=2がないため除外対象ではなくしたいです。
92
+
93
+
94
+
69
95
  説明不足で申し訳ありませんが、お力を貸してください。
70
96
 
71
97
 
@@ -75,3 +101,9 @@
75
101
 
76
102
 
77
103
  unionやgroup byを試してみましたが、うまくいきませんでした。
104
+
105
+
106
+
107
+ ### バージョン
108
+
109
+ MySQL 5.7.15