質問編集履歴

4

ソースコードを修正しました。

2019/01/10 10:26

投稿

inari1973
inari1973

スコア35

test CHANGED
@@ -1 +1 @@
1
- SQLの複数列でLIKEに該当する語句の数が多い順にデータを並び替えることはできますでしょうか
1
+ unionで結合済みテーブルの複数列でLIKEに該当する語句の数が多い順にデータを並び替えたい
test CHANGED
@@ -1,4 +1,6 @@
1
+ 【実現したいこと】
2
+
1
- SQLの複数列でLIKEに該当する語句の数が多い順にデータを並び替えることはできますでしょうか
3
+ unionで結合済みテーブルの複数列でLIKEに該当する語句の数が多い順にデータを並び替えたい
2
4
 
3
5
 
4
6
 
@@ -44,10 +46,6 @@
44
46
 
45
47
  |4|とまと|りんご|
46
48
 
47
- |5|とまと|なすとまと|
48
-
49
- |6|なす|なす|
50
-
51
49
 
52
50
 
53
51
 
@@ -86,6 +84,12 @@
86
84
 
87
85
  ```ここに言語を入力
88
86
 
89
- SELECT * FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%' order by (LENGTH(cont1) - LENGTH(REPLACE(cont1,"りんご",""))) + (LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))) + (LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))) DESC
87
+ SELECT * FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%'
88
+
89
+ union all
90
+
91
+ SELECT * FROM やさい WHERE cont4 LIKE '%りんご%'
92
+
93
+ order by (LENGTH(cont1) - LENGTH(REPLACE(cont1,"りんご",""))) + (LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))) + (LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))) DESC
90
94
 
91
95
  ```

3

見やすくしました。

2019/01/10 10:26

投稿

inari1973
inari1973

スコア35

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- テーブル1(名前:フルーツ
21
+ テーブル:フルーツ
22
22
 
23
23
 
24
24
 
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- テーブル2(名前:やさい
37
+ テーブル:やさい
38
38
 
39
39
 
40
40
 
@@ -49,6 +49,14 @@
49
49
  |6|なす|なす|
50
50
 
51
51
 
52
+
53
+
54
+
55
+
56
+
57
+ 以下のように「りんご」という語句の数が多い順に並べ替えたいです。
58
+
59
+
52
60
 
53
61
 
54
62
 

2

見やすくしました。

2019/01/10 10:20

投稿

inari1973
inari1973

スコア35

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,20 @@
1
1
  SQLの複数列でLIKEに該当する語句の数が多い順にデータを並び替えることはできますでしょうか。
2
2
 
3
3
 
4
+
5
+ ```ここに言語を入力
4
6
 
5
7
  SELECT cont1,cont2,null as cont3,null as cont4 FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%'
6
8
 
7
9
  union all
8
10
 
9
11
  SELECT null,null,cont3,cont4 FROM やさい WHERE cont4 LIKE '%りんご%'
12
+
13
+ ```
14
+
15
+
16
+
17
+ ---
10
18
 
11
19
 
12
20
 
@@ -60,6 +68,16 @@
60
68
 
61
69
 
62
70
 
71
+ ---
72
+
73
+
74
+
63
75
  以下では上手く動きませんでした。
64
76
 
77
+
78
+
79
+ ```ここに言語を入力
80
+
65
81
  SELECT * FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%' order by (LENGTH(cont1) - LENGTH(REPLACE(cont1,"りんご",""))) + (LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))) + (LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))) DESC
82
+
83
+ ```

1

より詳細に記載しました。

2019/01/10 10:17

投稿

inari1973
inari1973

スコア35

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,15 @@
2
2
 
3
3
 
4
4
 
5
+ SELECT cont1,cont2,null as cont3,null as cont4 FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%'
6
+
7
+ union all
8
+
5
- SELECT * FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%'
9
+ SELECT null,null,cont3,cont4 FROM やさい WHERE cont4 LIKE '%りんご%'
6
10
 
7
11
 
8
12
 
9
- テーブル(名前:フルーツ)
13
+ テーブル1(名前:フルーツ)
10
14
 
11
15
 
12
16
 
@@ -22,13 +26,29 @@
22
26
 
23
27
 
24
28
 
29
+ テーブル2(名前:やさい)
30
+
31
+
32
+
33
+ |id|cont3|cont4|
34
+
35
+ |:--|:--:|--:|
36
+
37
+ |4|とまと|りんご|
38
+
39
+ |5|とまと|なすとまと|
40
+
41
+ |6|なす|なす|
42
+
43
+
44
+
25
45
 
26
46
 
27
47
 
28
48
 
29
- |id|cont1|cont2|
49
+ |id|cont1|cont2|cont4|
30
50
 
31
- |:--|:--:|--:|
51
+ |:--|:--:|--:|--:|
32
52
 
33
53
  |3|みかんみかんりんごりんごりんご|ぶどうりんご|
34
54
 
@@ -36,10 +56,10 @@
36
56
 
37
57
  |1|りんごりんごみかん|ぶどう|
38
58
 
59
+ |4|||りんご
39
60
 
40
61
 
41
62
 
63
+ 以下では上手く動きませんでした。
42
64
 
43
- 一つの列の場合は以下で処理できましたが、複数列の場合は処理ができずに悩でいます。
44
-
45
- SELECT * FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%' order by (LENGTH(cont1) - LENGTH(REPLACE(cont1,"りんご",""))) DESC
65
+ SELECT * FROM フルーツ WHERE cont1,cont2 LIKE '%りご%' order by (LENGTH(cont1) - LENGTH(REPLACE(cont1,"りんご",""))) + (LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))) + (LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))) DESC