回答編集履歴

4

追記

2016/07/25 14:20

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -29,3 +29,65 @@
29
29
  WHERE条件指定をしていないので、
30
30
 
31
31
  全レコードが洗い替え対象になってしまいますが…^^;
32
+
33
+
34
+
35
+ ###追記
36
+
37
+ コメントを受け追記しときます。
38
+
39
+
40
+
41
+ - COALESCEについて
42
+
43
+ こちらはご存知でしたら読み飛ばしてください。
44
+
45
+
46
+
47
+ **COALESCE**とは標準SQLで定義されている関数(なのでMySQL、SQL Server、Oracleでも利用可)で、
48
+
49
+ 機能としては引数リストの内**左から最初にNULLでなかった値**を返します。
50
+
51
+
52
+
53
+ そのためサンプルで掲示した、
54
+
55
+ ```SQL
56
+
57
+ COALESCE(visiting_date, '')
58
+
59
+ ```
60
+
61
+ というのは**visiting_dateがNULLでない**ならvisiting_dateの値を、
62
+
63
+ **visiting_dateがNULL**なら''を返します。
64
+
65
+
66
+
67
+ - 利用意図について
68
+
69
+ 当方がMySQLの仕様について熟知してないのでもしかしたら意味ないかもですが、
70
+
71
+ visiting_dateのNULLと''が異なる値と解釈される場合、
72
+
73
+ ```SQL
74
+
75
+ visiting_date = ''
76
+
77
+ ```
78
+
79
+ ではisiting_dateがNULLの場合に**更新対象外**とされるため、
80
+
81
+ COALESCEをかませてNULL → ''に変換することでNULLと''をまとめて評価できるようにしています。
82
+
83
+
84
+
85
+ つまるところtakasima20さんの最初に掲示されたSQLの
86
+
87
+ ```SQL
88
+
89
+ visiting_date is null or visiting_date = ''
90
+
91
+ ```
92
+
93
+ 上記条件と振る舞いは同様となります。

3

スペルミス修正

2016/07/25 14:20

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  (CASE
14
14
 
15
- WHEN COALECSE(visiting_date, '') = '' THEN '未訪問'
15
+ WHEN COALESCE(visiting_date, '') = '' THEN '未訪問'
16
16
 
17
17
  WHEN visiting_date <= DATE_ADD(CURRENT_DATE, INTERVAL - 1 MONTH) AND customer = '田中' THEN '未訪問'
18
18
 

2

ソース修正

2016/07/24 06:20

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -16,10 +16,16 @@
16
16
 
17
17
  WHEN visiting_date <= DATE_ADD(CURRENT_DATE, INTERVAL - 1 MONTH) AND customer = '田中' THEN '未訪問'
18
18
 
19
- ELSE state
19
+ ELSE '訪問済み'
20
20
 
21
21
  END
22
22
 
23
23
  )
24
24
 
25
25
  ```
26
+
27
+
28
+
29
+ WHERE条件指定をしていないので、
30
+
31
+ 全レコードが洗い替え対象になってしまいますが…^^;

1

ソース修正

2016/07/24 06:13

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -16,6 +16,10 @@
16
16
 
17
17
  WHEN visiting_date <= DATE_ADD(CURRENT_DATE, INTERVAL - 1 MONTH) AND customer = '田中' THEN '未訪問'
18
18
 
19
- ELSE state)
19
+ ELSE state
20
+
21
+ END
22
+
23
+ )
20
24
 
21
25
  ```