質問編集履歴
2
全体的にすべてを書き直し みなさんのアドバイスを受けて。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
複数のテーブルのレコードを代入したい
|
test
CHANGED
@@ -2,104 +2,64 @@
|
|
2
2
|
|
3
3
|
ソース
|
4
4
|
|
5
|
-
|
5
|
+
複数のレコードを読み込んで実行したい
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
DROP PROCEDURE IF EXISTS testproc1$$
|
10
|
-
|
11
|
-
|
12
6
|
|
13
7
|
CREATE PROCEDURE testproc1()
|
14
8
|
|
15
9
|
BEGIN
|
16
10
|
|
17
|
-
DECLARE done INT;
|
11
|
+
DECLARE done INT DEFAULT 0;
|
18
12
|
|
13
|
+
DECLARE a INT;
|
14
|
+
|
15
|
+
DECLARE cur1 cursor FOR SELECT column1 FROM table1;
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
-
DECLARE
|
19
|
+
DECLARE continue handler FOR sqlstate '02000' SET done = 1;
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
OPEN cur1;
|
20
24
|
|
21
25
|
|
22
26
|
|
23
|
-
|
27
|
+
WHILE done DO
|
24
28
|
|
29
|
+
FETCH cur1 INTO a;
|
30
|
+
|
31
|
+
IF done THEN
|
32
|
+
|
25
|
-
|
33
|
+
update table1 set colum1=3 where colum1=2;
|
34
|
+
|
35
|
+
END IF;
|
36
|
+
|
37
|
+
END WHILE;
|
26
38
|
|
27
39
|
|
28
40
|
|
29
|
-
IF @num=2 THEN
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
SET @query = CONCAT('SELECT * FROM table1 INTO OUTFILE ',"'", @path ,"'",' FIELDS TERMINATED BY ","');
|
34
|
-
|
35
|
-
PREPARE getExtends FROM @query;
|
36
|
-
|
37
|
-
EXECUTE getExtends;
|
38
|
-
|
39
|
-
DEALLOCATE PREPARE getExtends;
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
SET SQL_SAFE_UPDATES = 0;
|
44
|
-
|
45
|
-
update table1 set table1.colum1=3 where table1.colum1=2;
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
41
|
+
CLOSE cur1;
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
select * from t213_cont_doc_info;
|
54
|
-
|
55
|
-
|
56
42
|
|
57
43
|
END$$
|
58
44
|
|
59
45
|
|
60
46
|
|
61
|
-
|
47
|
+
delimiter ;
|
62
48
|
|
63
49
|
|
64
50
|
|
65
|
-
|
51
|
+
と書きました。テーブルのカラムには
|
66
52
|
|
67
|
-
|
53
|
+
| colum |
|
68
54
|
|
69
|
-
|
|
55
|
+
| 1 |
|
70
56
|
|
71
|
-
|
|
57
|
+
| 2 |
|
72
58
|
|
73
|
-
| 2 |
|
59
|
+
| 2 |
|
74
60
|
|
75
|
-
| 3 |
|
61
|
+
| 3 |
|
76
62
|
|
77
|
-
と
|
63
|
+
とあって上からカラムを読み込んで、2を3に変換したいのですが、うまくいきません。
|
78
64
|
|
79
|
-
実行後
|
80
|
-
|
81
|
-
csv出力
|
82
|
-
|
83
|
-
table1
|
84
|
-
|
85
|
-
|colum1|
|
86
|
-
|
87
|
-
| 1 |
|
88
|
-
|
89
|
-
| 3 |
|
90
|
-
|
91
|
-
| 3 |
|
92
|
-
|
93
|
-
みたいな感じの処理です。
|
94
|
-
|
95
|
-
ソースの9行目あたりの
|
96
|
-
|
97
|
-
SET @num=(SELECT table1.colum1 FROM table1);のとこで Error Code: 1242. Subquery returns more than 1 row
|
98
|
-
|
99
|
-
と出てしまいます。
|
100
|
-
|
101
|
-
なので SET @num=(SELECT * FROM table1 WHERE table1.colum1=2);とやると、今度はError Code: 1241. Operand should contain 1 column(s)と出てしまいます。
|
102
|
-
|
103
|
-
このエラーを直すにはどうすればよろしいでしょうか?
|
104
|
-
|
105
|
-
|
65
|
+
やりかた分かる方お願いいたします。
|
1
説明の追加。。。。。。。。。。。。。。。。
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,7 +62,37 @@
|
|
62
62
|
|
63
63
|
|
64
64
|
|
65
|
-
やっていることはtable1.colum1の中には1,2,3などの数字が入っていてもしテーブルのカラムの数字が2ならCSV出力して2を3に変えるという
|
65
|
+
やっていることはtable1.colum1の中には1,2,3などの数字が入っていてもしテーブルのカラムの数字が2ならCSV出力して2を3に変えるという処理です。
|
66
|
+
|
67
|
+
table1
|
68
|
+
|
69
|
+
|colum1|
|
70
|
+
|
71
|
+
| 1 |
|
72
|
+
|
73
|
+
| 2 |
|
74
|
+
|
75
|
+
| 3 |
|
76
|
+
|
77
|
+
と入っていて、上から2に引っかかったらcsv出力して、2を3に変える処理です
|
78
|
+
|
79
|
+
実行後
|
80
|
+
|
81
|
+
csv出力
|
82
|
+
|
83
|
+
table1
|
84
|
+
|
85
|
+
|colum1|
|
86
|
+
|
87
|
+
| 1 |
|
88
|
+
|
89
|
+
| 3 |
|
90
|
+
|
91
|
+
| 3 |
|
92
|
+
|
93
|
+
みたいな感じの処理です。
|
94
|
+
|
95
|
+
ソースの9行目あたりの
|
66
96
|
|
67
97
|
SET @num=(SELECT table1.colum1 FROM table1);のとこで Error Code: 1242. Subquery returns more than 1 row
|
68
98
|
|