質問編集履歴

2

不要項目を削除

2019/08/07 14:48

投稿

qaqaqa
qaqaqa

スコア9

test CHANGED
File without changes
test CHANGED
@@ -6,39 +6,39 @@
6
6
 
7
7
  A TABLE (B TABLEに +Nレコード追加されたものが A TABLEです)
8
8
 
9
- |Aid|Bid|xdate|コメント|
9
+ |id|xdate|コメント|
10
10
 
11
- |:--|:--:|--:|--:|
11
+ |:--|--:|--:|
12
12
 
13
- |1|11|20190701| ->両方テーブルに存在するので除外|
13
+ |1|20190701| ->A,B両方テーブルに存在するので除外|
14
14
 
15
- |2|22|20190710| ->Aidが重複し、最古でないので除外|
15
+ |2|20190710| ->idが重複し、最古でないので除外|
16
16
 
17
- |2|33|20190702| ->このレコードを得たい|
17
+ |2|20190702| ->このレコードを得たい|
18
18
 
19
- |4|44|20190801| ->このレコードを得たい|
19
+ |4|20190801| ->このレコードを得たい|
20
20
 
21
21
 
22
22
 
23
23
  B TABLE
24
24
 
25
- |Aid|Bid|xdate|コメント|
25
+ |id|xdate|コメント|
26
26
 
27
- |:--|:--:|--:|--:|
27
+ |:--|--:|--:|
28
28
 
29
- |1|11|20190701| ->両方テーブルに存在するので除外|
29
+ |1|20190701| ->A,B両方テーブルに存在するので除外|
30
30
 
31
31
 
32
32
 
33
33
  期待する結果
34
34
 
35
- |Aid|Bid|xdate|コメント|
35
+ |id|xdate|コメント|
36
36
 
37
- |:--|:--:|--:|--:|
37
+ |:--|--:|--:|
38
38
 
39
- |2|33|20190702| ->Aid重複の内、xdateが古いレコード
39
+ |2|20190702| ->id重複の内、xdateが古いレコード
40
40
 
41
- |4|44|20190801| ->Aにしか無いレコード
41
+ |4|20190801| ->Aにしか無いレコード
42
42
 
43
43
 
44
44
 
@@ -56,27 +56,27 @@
56
56
 
57
57
  FROM B
58
58
 
59
- where A.Aid=B.Aid
59
+ where A.id=B.id
60
60
 
61
61
  )
62
62
 
63
63
  ```
64
64
 
65
- このSQLで下記の通り A のみ存在するレコードの取得は出来ましたが、Aidが重複している。
65
+ このSQLで下記の通り A のみ存在するレコードの取得は出来ましたが、idが重複している。
66
66
 
67
- |Aid|Bid|xdate|
67
+ |id|date|コメント|
68
68
 
69
69
  |:--:|--:|--:|
70
70
 
71
- |2 |22 |20190710|
71
+ |2 |20190710|-> idが重複し最古でないので除外したい|
72
72
 
73
- |2 |33 |20190702|
73
+ |2 |20190702||
74
74
 
75
- |4 |44 |20190801|
75
+ |4 |20190801||
76
76
 
77
77
 
78
78
 
79
- 一方、A 内の重複で最古のレコードは、(等号記号で最古?)
79
+ 一方、A 内の重複で最古のレコードは、(等号記号で最古?変では?)
80
80
 
81
81
  ```SQL
82
82
 
@@ -86,7 +86,7 @@
86
86
 
87
87
  ( select 1 from A as t2
88
88
 
89
- where t1.Aid=t2.Aid
89
+ where t1.id=t2.id
90
90
 
91
91
  and t1.xdate > t2.xdate );
92
92
 
@@ -96,15 +96,15 @@
96
96
 
97
97
  で下記の通り取れたのですが、
98
98
 
99
- |Aid|Bid|xdate|コメント|
99
+ |id|xdate|コメント|
100
100
 
101
- |:--:|--:|--:|--:|
101
+ |:--:|--:|--:|
102
102
 
103
- |1 |11 |20190701| ->これは B TABLE と重複しているので除外したい
103
+ |1 |20190701| ->これは B TABLE と重複しているので除外したい|
104
104
 
105
- |2 |33 |20190702|
105
+ |2 |20190702||
106
106
 
107
- |4 |44 |20190801|
107
+ |4 |20190801||
108
108
 
109
109
 
110
110
 

1

表形式とコード形式にしました

2019/08/07 14:48

投稿

qaqaqa
qaqaqa

スコア9

test CHANGED
File without changes
test CHANGED
@@ -4,39 +4,45 @@
4
4
 
5
5
 
6
6
 
7
- A TABLE
7
+ A TABLE (B TABLEに +Nレコード追加されたものが A TABLEです)
8
8
 
9
- |Aid|Bid|xdate|
9
+ |Aid|Bid|xdate|コメント|
10
10
 
11
- |1 |11 |20190701|
11
+ |:--|:--:|--:|--:|
12
12
 
13
- |2 |22 |20190710|
13
+ |1|11|20190701| ->両方テーブルに存在するので除外|
14
14
 
15
- |2 |33 |20190702| ->レコードを得たい
15
+ |2|22|20190710| ->Aidが重複し、最古でないで除外|
16
16
 
17
+ |2|33|20190702| ->このレコードを得たい|
18
+
17
- |4 |44 |20190801| ->このレコードを得たい
19
+ |4|44|20190801| ->このレコードを得たい|
18
20
 
19
21
 
20
22
 
21
23
  B TABLE
22
24
 
23
- |Aid|Bid|xdate|
25
+ |Aid|Bid|xdate|コメント|
24
26
 
27
+ |:--|:--:|--:|--:|
28
+
25
- |1 |11 |20190701| ->両方テーブルに存在するので除外
29
+ |1|11|20190701| ->両方テーブルに存在するので除外|
26
30
 
27
31
 
28
32
 
29
33
  期待する結果
30
34
 
31
- |Aid|Bid|xdate|
35
+ |Aid|Bid|xdate|コメント|
32
36
 
33
- |2 |33 |20190702| ->Aid重複の内、xdateが古いレコード
37
+ |:--|:--:|--:|--:|
34
38
 
39
+ |2|33|20190702| ->Aid重複の内、xdateが古いレコード
40
+
35
- |4 |44 |20190801| ->Aにしか無いレコード
41
+ |4|44|20190801| ->Aにしか無いレコード
36
42
 
37
43
 
38
44
 
39
-
45
+ ```SQL
40
46
 
41
47
  SELECT *
42
48
 
@@ -54,9 +60,13 @@
54
60
 
55
61
  )
56
62
 
63
+ ```
64
+
57
- このSQLで下記の通り一方のみ存在するレコードの取得は出来、
65
+ このSQLで下記の通り A のみ存在するレコードの取得は出来ましたがAidが重複している。
58
66
 
59
67
  |Aid|Bid|xdate|
68
+
69
+ |:--:|--:|--:|
60
70
 
61
71
  |2 |22 |20190710|
62
72
 
@@ -66,13 +76,13 @@
66
76
 
67
77
 
68
78
 
69
- 一方、最古のレコードは、
79
+ 一方、A 内の重複で最古のレコードは、(等号記号で最古?)
80
+
81
+ ```SQL
70
82
 
71
83
  select * from A as t1
72
84
 
73
- where
74
-
75
- not exists
85
+ where not exists
76
86
 
77
87
  ( select 1 from A as t2
78
88
 
@@ -80,13 +90,17 @@
80
90
 
81
91
  and t1.xdate > t2.xdate );
82
92
 
93
+ ```
94
+
83
95
 
84
96
 
85
97
  で下記の通り取れたのですが、
86
98
 
87
- |Aid|Bid|xdate|
99
+ |Aid|Bid|xdate|コメント|
88
100
 
101
+ |:--:|--:|--:|--:|
102
+
89
- |1 |11 |20190701| ->これは不要
103
+ |1 |11 |20190701| ->これは B TABLE と重複しているので除外したい
90
104
 
91
105
  |2 |33 |20190702|
92
106