回答編集履歴

2

嘘コメント削除

2021/02/08 13:57

投稿

退会済みユーザー
test CHANGED
@@ -54,8 +54,6 @@
54
54
 
55
55
  ```sql
56
56
 
57
- /* hogeテーブルのfugaが1, 3, 5のものを消せ */
58
-
59
57
  delete from hoge where fuga in (select * from foo);
60
58
 
61
59
  ```
@@ -70,8 +68,6 @@
70
68
 
71
69
  ```sql
72
70
 
73
- /* hogeテーブルのfugaが1, 3, 5のものを消せ */
74
-
75
71
  delete from hoge where fuga in (select bar from foo);
76
72
 
77
73
  ```

1

ヒント追加

2021/02/08 13:57

投稿

退会済みユーザー
test CHANGED
@@ -15,3 +15,73 @@
15
15
 
16
16
 
17
17
  [https://www.postgresql.jp/document/12/html/sql-delete.html](https://www.postgresql.jp/document/12/html/sql-delete.html)
18
+
19
+
20
+
21
+ ## ヒント
22
+
23
+ 分かりやすいやつだとこんな感じ
24
+
25
+
26
+
27
+ ```sql
28
+
29
+ /* hogeテーブルのfugaが1のものを消せ */
30
+
31
+ delete from hoge where fuga = 1;
32
+
33
+ ```
34
+
35
+
36
+
37
+ で、条件は`in`と`()丸かっこ`で複数指定が出来る
38
+
39
+
40
+
41
+ ```sql
42
+
43
+ /* hogeテーブルのfugaが1, 3, 5のものを消せ */
44
+
45
+ delete from hoge where fuga in (1, 3, 5);
46
+
47
+ ```
48
+
49
+
50
+
51
+ 丸かっこの所はサブクエリ、複文としてselectが書けたりする
52
+
53
+
54
+
55
+ ```sql
56
+
57
+ /* hogeテーブルのfugaが1, 3, 5のものを消せ */
58
+
59
+ delete from hoge where fuga in (select * from foo);
60
+
61
+ ```
62
+
63
+
64
+
65
+ まあ、このまんまだと、`foo`テーブルの中身がごっそり来ておそらく`fuga`と型が違うと怒られるので
66
+
67
+ `select`文を工夫して同じ型で評価できるようにすればいい。
68
+
69
+
70
+
71
+ ```sql
72
+
73
+ /* hogeテーブルのfugaが1, 3, 5のものを消せ */
74
+
75
+ delete from hoge where fuga in (select bar from foo);
76
+
77
+ ```
78
+
79
+ fugaとbarがint型とかだったら条件式が成立するね!
80
+
81
+ この例だと、`foo.bar = hoge.fuga`が成立するhogeのレコードが消えることになる。
82
+
83
+
84
+
85
+ さあ、`select`文が書けたぞ。
86
+
87
+ 後は頑張ってください。