teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

状況の変化

2022/07/09 04:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -29,8 +29,8 @@
29
29
  name varchar(255)
30
30
  );
31
31
 
32
- INSERT to newname(idx,name)
32
+ INSERT into newname(idx,name)
33
- select *
33
+ select
34
34
  id
35
35
  ,name
36
36
  ,case
@@ -43,7 +43,6 @@
43
43
  from test
44
44
 
45
45
  ```
46
- この段階で1064番のエラが返ってきます。
46
+ この段階で1136番のエラが返ってきます。
47
- 構文エラでしょうか。どこが間違っているのかよくわかりません。
48
- insert to newnameのあ英語書かれているに見えます。
47
+ カラム数がっていないとあます。idx,nameid,nameの指定なのカラムの数は合っていると思のでが、どこを見落としているのでしょうか
49
48
 

2

追加

2022/07/09 03:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -16,13 +16,34 @@
16
16
 
17
17
  ただし、一つ残すそのデータにもともと含まれていた空白はそのままにしたいです。田中 太郎でも田中   太郎でも、どれでも良いから一つ空白が入っていたままの状態で残したいです。
18
18
 
19
+
20
+ 考えたことは以下です。
21
+ ①nameテーブルから全ての空白をreplaceにより詰めたデータを、一時的なテーブルの中に追加する。(newnameというテーブル名)
22
+ ②newnameの中で重複するデータを見つけてidの若い方を残し、それ以外を削除する。
23
+ ③nameテーブルに於いてnewnameにあるidと同じidを見つけたら削除する。 という形式でコードを書けば、空白は元のままで重複する余分なデータを削除できるのではないかと考えたのですが、無理はないでしょうか。無理がなければ、 このようなコードはどのようにしたら書けるのでしょうか。
24
+
19
25
  試したコードは
20
- ```sql
26
+ ```mysql
21
- update NAME set name = replace(name,'( | )','');
27
+ create temporary table newname(
28
+ idx int,
22
- DELETE FROM NAME WHERE id NOT IN (SELECT min_id from (SELECT MIN(id) AS min_id FROM NAME GROUP BY name) AS tmp);
29
+ name varchar(255)
30
+ );
23
31
 
32
+ INSERT to newname(idx,name)
33
+ select *
34
+ id
35
+ ,name
36
+ ,case
37
+ when instr(name,' ')>0
38
+ then replace(replace(name,' ',''),' ','')
39
+
40
+ when instr(name,' ')>0
41
+ then replace(replace(name,' ',''),' ','')
42
+ end as newname
43
+ from test
44
+
24
45
  ```
25
- などです。ただこのコードは、最初それでは変更された行数0でした。何故成功しないのかが解らないのですが、成功したところで空白が詰められた状態のテーブルが出来上がる気がします。
46
+ この段階1064番エラ返ってきます。
26
- replaceでは正規表現?が使えないのでしょうか。一つの空白をなくすことはできましたが、それでは全角半角の区別、空白の連続回数が想定できません。何より最終的なテーブルには空白がない状態の文字列が残ってしまうことになります。
27
- どのようなコードを入力すれば、やりたいことが実現するでしょうか。
47
+ 構文エラでしょうか。どこが間違っているのかよくわかりません。
28
- 実現は不可能しょうか。
48
+ insert to newnameのあたりだと英語れているように見えます
49
+

1

脱字

2022/07/07 13:53

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -25,3 +25,4 @@
25
25
  などです。ただこのコードでは、最初のそれでは変更された行数が0でした。何故成功しないのかが解らないのですが、成功したところで空白が詰められた状態のテーブルが出来上がる気がします。
26
26
  replaceでは正規表現?が使えないのでしょうか。一つの空白をなくすことはできましたが、それでは全角半角の区別、空白の連続回数が想定できません。何より最終的なテーブルには空白がない状態の文字列が残ってしまうことになります。
27
27
  どのようなコードを入力すれば、やりたいことが実現するでしょうか。
28
+ 実現は不可能でしょうか。