質問編集履歴
3
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,3 @@
|
|
1
1
|
MySQLで、片方のテーブルにしかないデータをランダムで10件抽出したいと思います。xamppでphpMyAdminを使用しています。
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
解決しました。
|
3
|
+
自己解決しました。
|
2
解決のため、不要な文章削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,222 +2,4 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
wordsテーブルの主キーで結合可能、ただしいろいろなユーザーの単語のクイズの成績が存在する。下記詳述。
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
クイズテーブルには、それぞれのユーザーが以前クイズで回答した単語の成績が追加されています。
|
12
|
-
|
13
|
-
wordsテーブルの主キーとusersテーブル(ユーザー情報保管テーブル)の主キーを外部キーにして作成しています。
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
単語テーブル
|
18
|
-
|
19
|
-
```SQL
|
20
|
-
|
21
|
-
CREATE TABLE `words` (
|
22
|
-
|
23
|
-
`id` int(6) NOT NULL,
|
24
|
-
|
25
|
-
`word` char(50) CHARACTER SET utf8 NOT NULL COMMENT '単語',
|
26
|
-
|
27
|
-
`meaning` char(50) CHARACTER SET utf8 NOT NULL COMMENT '意味',
|
28
|
-
|
29
|
-
`example` varchar(200) CHARACTER SET utf8 DEFAULT NULL COMMENT '例文',
|
30
|
-
|
31
|
-
`add_datetime` datetime DEFAULT NULL,
|
32
|
-
|
33
|
-
`delete_datetime` datetime DEFAULT NULL,
|
34
|
-
|
35
|
-
`user_id` int(11) NOT NULL,
|
36
|
-
|
37
|
-
`list_id` int(11) NOT NULL COMMENT '単語帳外部キー'
|
38
|
-
|
39
|
-
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
40
|
-
|
41
|
-
```
|
42
|
-
|
43
|
-
```SQL
|
44
|
-
|
45
|
-
INSERT INTO `words` (`id`, `word`, `meaning`, `example`, `add_datetime`, `delete_datetime`, `user_id`, `list_id`) VALUES
|
46
|
-
|
47
|
-
(11, 'Poop', 'うんこ\r\n', 'I want to eat poop.\r\n私はうんこ食べたいです。', NULL, '2021-08-31 22:12:33', 1, 1),
|
48
|
-
|
49
|
-
(41, 'parentheses', '括弧()', NULL, '2021-08-18 22:12:46', NULL, 4, 2),
|
50
|
-
|
51
|
-
(46, 'dumb', '〈主に米話〉頭の悪い、ばかな、あほな、\r\n間抜けな、常識のない', 'We're making a dumb Youtube video.', '2021-08-16 23:29:23', NULL, 4, 2),
|
52
|
-
|
53
|
-
(48, 'ignorant', '無知な', 'My grandmother is always igonorant.', NULL, NULL, 4, 2),
|
54
|
-
|
55
|
-
(57, 'I couldn't help but', 'どうしても目が行ってしまう', 'I couldn't help but notice your necklace.\r\nそのネックレスに\r\nどうしても目が行ってしまって。', '2022-01-03 18:02:21', NULL, 1, 1),
|
56
|
-
|
57
|
-
(59, 'I'll walk you through', '1つずつ全体を段階的に説明します', 'Don't worry. I'll walk you through again later.\r\n(心配いらないわ。後でもう一度全体を1つずつ段階的に説明するわね。) ', NULL, NULL, 1, 1),
|
58
|
-
|
59
|
-
(64, 'judgmental', 'すぐに決めつけて批判するような\r\nよく知らないで自分の価値基準だけですぐに批判するような', 'He's judgmental.', '2022-01-03 21:15:13', NULL, 1, 1),
|
60
|
-
|
61
|
-
(74, 'acquaintance', '知人', 'Mr. Collins is an acquaintance rather than a friend.', '2021-08-22 00:03:17', NULL, 1, 1),
|
62
|
-
|
63
|
-
(75, 'Put you down', '悪い方向に無理やり持っていて、批判する的な?\r\nけなす', 'She always puts me down.', '2021-08-22 00:04:00', NULL, 1, 1),
|
64
|
-
|
65
|
-
(76, 'Flirt', 'イチャイチャする', 'If you like him, try flirting with him. He might get the message.\r\n(彼の事が好きだったら、からかったり褒めたりしてみて。彼はあなたの気持ちが分かるかもしれない。)', '2021-08-22 00:04:30', NULL, 1, 1),
|
66
|
-
|
67
|
-
(77, 'crunch time', '締め切り前の踏ん張りどころ', 'I’m in a time crunch with my projects.(=複数のプロジェクトで時間に追われている)', '2021-08-22 00:04:59', NULL, 1, 1),
|
68
|
-
|
69
|
-
(78, 'Pinkeye', '結膜炎', 'My brother farted on my face yesterday\r\nso I think I have a pinkeye now', '2021-08-22 13:08:31', NULL, 1, 1),
|
70
|
-
|
71
|
-
(84, 'sample', 'サンプル', 'this is sample', '2021-09-02 01:40:46', '2021-09-02 09:38:02', 1, 3),
|
72
|
-
|
73
|
-
(85, 'ballsy', '〈米俗〉威勢のいい、心臓の強い、度胸のある、勇敢な、根性のある \r\n\r\n', 'Let's see how ballsy they are.\r\n彼らがどれだけ度胸があるか見てみよう。\r\nMy dad says you're ballsy.\r\n父が、あなたは根性があるって言っていたわ。', '2021-12-11 22:55:33', NULL, 1, 1),
|
74
|
-
|
75
|
-
(86, 'assertive', '〔意見・要求・感情などの表現が〕自信に満ちた態度の、積極的な、はっきり[積極的に]自己主張する', '"I am the type who can't say 'No.'"\r\n"You should be more assertive."\r\n\r\n「私はノーと言えない性格なんです」\r\n「あなたはもう少し積極的に自己主張するべきです」', '2021-09-02 12:10:38', NULL, 1, 1),
|
76
|
-
|
77
|
-
(87, 'give off', '〔光・気体・熱・雰囲気などを〕出す、発する', 'She is giving off an atmosphere of not wanting to be here.\r\n彼女はここにいたくないというそぶりを見せている。', '2021-09-02 12:10:16', NULL, 1, 1),
|
78
|
-
|
79
|
-
(88, 'Sum up', '要約する', 'Can you sum up what you said ?', '2021-09-02 12:07:19', NULL, 1, 1),
|
80
|
-
|
81
|
-
(89, 'sample', 'サンプル', NULL, '2021-12-30 21:57:36', '2021-12-30 21:58:47', 4, 2);
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
```
|
86
|
-
|
87
|
-
クイズテーブル
|
88
|
-
|
89
|
-
```SQL
|
90
|
-
|
91
|
-
CREATE TABLE `quiz` (
|
92
|
-
|
93
|
-
`id` int(11) NOT NULL COMMENT '主キー',
|
94
|
-
|
95
|
-
`correctCount` int(11) NOT NULL COMMENT '単語正解した回数',
|
96
|
-
|
97
|
-
`falseCount` int(11) NOT NULL COMMENT '単語間違えた数',
|
98
|
-
|
99
|
-
`lastCorrectedTime` datetime DEFAULT NULL COMMENT '最後に正解した時間',
|
100
|
-
|
101
|
-
`lastFalseTime` datetime DEFAULT NULL COMMENT '最後に間違えた時間',
|
102
|
-
|
103
|
-
`word_id` int(11) NOT NULL COMMENT '単語外部キー',
|
104
|
-
|
105
|
-
`user_id` int(11) NOT NULL COMMENT 'ユーザー外部キー'
|
106
|
-
|
107
|
-
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
108
|
-
|
109
|
-
```
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
```SQL
|
114
|
-
|
115
|
-
INSERT INTO `quiz` (`id`, `correctCount`, `falseCount`, `lastCorrectedTime`, `lastFalseTime`, `word_id`, `user_id`) VALUES
|
116
|
-
|
117
|
-
(61, 1, 0, '2022-01-08 13:27:32', NULL, 75, 1),
|
118
|
-
|
119
|
-
(62, 1, 0, '2022-01-08 13:27:32', NULL, 78, 1),
|
120
|
-
|
121
|
-
(63, 1, 0, '2022-01-08 13:27:32', NULL, 76, 1),
|
122
|
-
|
123
|
-
(64, 0, 1, NULL, '2022-01-08 13:27:32', 64, 1),
|
124
|
-
|
125
|
-
(72, 2, 0, '2022-01-09 11:34:30', NULL, 77, 4),
|
126
|
-
|
127
|
-
(73, 3, 0, '2022-01-09 11:34:30', NULL, 85, 4),
|
128
|
-
|
129
|
-
(74, 2, 1, '2022-01-08 17:14:56', '2022-01-08 13:30:00', 75, 4),
|
130
|
-
|
131
|
-
(78, 2, 0, '2022-01-09 11:34:30', NULL, 64, 4),
|
132
|
-
|
133
|
-
(79, 1, 0, '2022-01-08 17:14:56', NULL, 78, 4),
|
134
|
-
|
135
|
-
(80, 1, 0, '2022-01-09 11:34:30', NULL, 76, 4),
|
136
|
-
|
137
|
-
(81, 1, 0, '2022-01-09 11:34:30', NULL, 87, 4),
|
138
|
-
|
139
|
-
(82, 1, 0, '2022-01-09 11:34:30', NULL, 74, 4),
|
140
|
-
|
141
|
-
```
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
逆に言うと、今までまだ一度もユーザーがクイズで回答していない単語について、その単語の単語IDとそのユーザーのユーザーIDを外部キーとして併せ持つレコードはクイズテーブルには存在しません。それを利用して今回の要望を実現したいと考えております。
|
146
|
-
|
147
|
-
(単語自体は、他のユーザーが回答している場合、クイズテーブルに追加されていますが、ユーザーIDの外部キがそのユーザーとは異なる。)
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
つまり、クイズテーブルには存在せず、単語テーブルにのみ存在する各ユーザーのクイズ未出題の単語を抽出したいです。
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
一つの単語には複数のユーザーのクイズの成績を保管しているため、単純にNOT EXISTSの条件をwhere quiz.word_id = words.idとするとすべてのユーザーがクイズで回答したことない単語のみが抽出されますが、それは望んでいません。それぞれのユーザー別に抽出したいです。
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
いろいろ調べて、NOT EXISTSを使用して、WHEREの条件でユーザーIDを指定しているのですが上手くいきません。
|
160
|
-
|
161
|
-
エラーとかはないのですが、何も抽出されません。
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
NOT EXISTSを書く前に、それぞれのSELECT文を分解して実行しましたが、両方きちんとデータが抽出されていました。
|
166
|
-
|
167
|
-
そして、クイズテーブルに存在せず単語テーブルにのみ存在するデータがあることも確認済みなので、何もデータが抽出されないのは正しい挙動ではありません。
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
どのようにすれば、上記の要件を満たすSQL文になるでしょうか。
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
ご教授お願い致します。
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
現在書いているSQL文
|
180
|
-
|
181
|
-
```SQL
|
182
|
-
|
183
|
-
SELECT w.id, w.word, w.meaning
|
184
|
-
|
185
|
-
FROM words w
|
186
|
-
|
187
|
-
WHERE w.delete_datetime IS NULL AND w.list_id = 1
|
188
|
-
|
189
|
-
AND NOT EXISTS (
|
190
|
-
|
191
|
-
SELECT * FROM quiz q
|
192
|
-
|
193
|
-
LEFT JOIN words w ON w.id = q.word_id
|
194
|
-
|
195
|
-
WHERE w.list_id = 1 AND q.user_id = 1
|
196
|
-
|
197
|
-
AND w.delete_datetime IS NULL
|
198
|
-
|
199
|
-
)
|
200
|
-
|
201
|
-
ORDER BY rand()
|
202
|
-
|
203
|
-
LIMIT 10
|
204
|
-
|
205
|
-
```
|
206
|
-
|
207
|
-
希望するSELECT結果(ユーザーによってこのNOT IN句に指定しなければいけない単語IDが違うため、動的に取得できる上記を書いている)
|
208
|
-
|
209
|
-
```SQL
|
210
|
-
|
211
|
-
SELECT w.id, w.word, w.meaning
|
212
|
-
|
213
|
-
FROM words w
|
214
|
-
|
215
|
-
WHERE w.delete_datetime IS NULL AND w.list_id = 1 AND
|
216
|
-
|
217
|
-
w.id NOT IN("75", "76", "78")
|
218
|
-
|
219
|
-
ORDER BY rand()
|
220
|
-
|
221
|
-
LIMIT 10
|
222
|
-
|
223
|
-
```
|
5
|
+
解決しました。
|
1
SQLで使っているテーブルのCREATE TABLE文や何件かINSERT文や希望するSELECT結果の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,6 +14,134 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
+
単語テーブル
|
18
|
+
|
19
|
+
```SQL
|
20
|
+
|
21
|
+
CREATE TABLE `words` (
|
22
|
+
|
23
|
+
`id` int(6) NOT NULL,
|
24
|
+
|
25
|
+
`word` char(50) CHARACTER SET utf8 NOT NULL COMMENT '単語',
|
26
|
+
|
27
|
+
`meaning` char(50) CHARACTER SET utf8 NOT NULL COMMENT '意味',
|
28
|
+
|
29
|
+
`example` varchar(200) CHARACTER SET utf8 DEFAULT NULL COMMENT '例文',
|
30
|
+
|
31
|
+
`add_datetime` datetime DEFAULT NULL,
|
32
|
+
|
33
|
+
`delete_datetime` datetime DEFAULT NULL,
|
34
|
+
|
35
|
+
`user_id` int(11) NOT NULL,
|
36
|
+
|
37
|
+
`list_id` int(11) NOT NULL COMMENT '単語帳外部キー'
|
38
|
+
|
39
|
+
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
40
|
+
|
41
|
+
```
|
42
|
+
|
43
|
+
```SQL
|
44
|
+
|
45
|
+
INSERT INTO `words` (`id`, `word`, `meaning`, `example`, `add_datetime`, `delete_datetime`, `user_id`, `list_id`) VALUES
|
46
|
+
|
47
|
+
(11, 'Poop', 'うんこ\r\n', 'I want to eat poop.\r\n私はうんこ食べたいです。', NULL, '2021-08-31 22:12:33', 1, 1),
|
48
|
+
|
49
|
+
(41, 'parentheses', '括弧()', NULL, '2021-08-18 22:12:46', NULL, 4, 2),
|
50
|
+
|
51
|
+
(46, 'dumb', '〈主に米話〉頭の悪い、ばかな、あほな、\r\n間抜けな、常識のない', 'We're making a dumb Youtube video.', '2021-08-16 23:29:23', NULL, 4, 2),
|
52
|
+
|
53
|
+
(48, 'ignorant', '無知な', 'My grandmother is always igonorant.', NULL, NULL, 4, 2),
|
54
|
+
|
55
|
+
(57, 'I couldn't help but', 'どうしても目が行ってしまう', 'I couldn't help but notice your necklace.\r\nそのネックレスに\r\nどうしても目が行ってしまって。', '2022-01-03 18:02:21', NULL, 1, 1),
|
56
|
+
|
57
|
+
(59, 'I'll walk you through', '1つずつ全体を段階的に説明します', 'Don't worry. I'll walk you through again later.\r\n(心配いらないわ。後でもう一度全体を1つずつ段階的に説明するわね。) ', NULL, NULL, 1, 1),
|
58
|
+
|
59
|
+
(64, 'judgmental', 'すぐに決めつけて批判するような\r\nよく知らないで自分の価値基準だけですぐに批判するような', 'He's judgmental.', '2022-01-03 21:15:13', NULL, 1, 1),
|
60
|
+
|
61
|
+
(74, 'acquaintance', '知人', 'Mr. Collins is an acquaintance rather than a friend.', '2021-08-22 00:03:17', NULL, 1, 1),
|
62
|
+
|
63
|
+
(75, 'Put you down', '悪い方向に無理やり持っていて、批判する的な?\r\nけなす', 'She always puts me down.', '2021-08-22 00:04:00', NULL, 1, 1),
|
64
|
+
|
65
|
+
(76, 'Flirt', 'イチャイチャする', 'If you like him, try flirting with him. He might get the message.\r\n(彼の事が好きだったら、からかったり褒めたりしてみて。彼はあなたの気持ちが分かるかもしれない。)', '2021-08-22 00:04:30', NULL, 1, 1),
|
66
|
+
|
67
|
+
(77, 'crunch time', '締め切り前の踏ん張りどころ', 'I’m in a time crunch with my projects.(=複数のプロジェクトで時間に追われている)', '2021-08-22 00:04:59', NULL, 1, 1),
|
68
|
+
|
69
|
+
(78, 'Pinkeye', '結膜炎', 'My brother farted on my face yesterday\r\nso I think I have a pinkeye now', '2021-08-22 13:08:31', NULL, 1, 1),
|
70
|
+
|
71
|
+
(84, 'sample', 'サンプル', 'this is sample', '2021-09-02 01:40:46', '2021-09-02 09:38:02', 1, 3),
|
72
|
+
|
73
|
+
(85, 'ballsy', '〈米俗〉威勢のいい、心臓の強い、度胸のある、勇敢な、根性のある \r\n\r\n', 'Let's see how ballsy they are.\r\n彼らがどれだけ度胸があるか見てみよう。\r\nMy dad says you're ballsy.\r\n父が、あなたは根性があるって言っていたわ。', '2021-12-11 22:55:33', NULL, 1, 1),
|
74
|
+
|
75
|
+
(86, 'assertive', '〔意見・要求・感情などの表現が〕自信に満ちた態度の、積極的な、はっきり[積極的に]自己主張する', '"I am the type who can't say 'No.'"\r\n"You should be more assertive."\r\n\r\n「私はノーと言えない性格なんです」\r\n「あなたはもう少し積極的に自己主張するべきです」', '2021-09-02 12:10:38', NULL, 1, 1),
|
76
|
+
|
77
|
+
(87, 'give off', '〔光・気体・熱・雰囲気などを〕出す、発する', 'She is giving off an atmosphere of not wanting to be here.\r\n彼女はここにいたくないというそぶりを見せている。', '2021-09-02 12:10:16', NULL, 1, 1),
|
78
|
+
|
79
|
+
(88, 'Sum up', '要約する', 'Can you sum up what you said ?', '2021-09-02 12:07:19', NULL, 1, 1),
|
80
|
+
|
81
|
+
(89, 'sample', 'サンプル', NULL, '2021-12-30 21:57:36', '2021-12-30 21:58:47', 4, 2);
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
```
|
86
|
+
|
87
|
+
クイズテーブル
|
88
|
+
|
89
|
+
```SQL
|
90
|
+
|
91
|
+
CREATE TABLE `quiz` (
|
92
|
+
|
93
|
+
`id` int(11) NOT NULL COMMENT '主キー',
|
94
|
+
|
95
|
+
`correctCount` int(11) NOT NULL COMMENT '単語正解した回数',
|
96
|
+
|
97
|
+
`falseCount` int(11) NOT NULL COMMENT '単語間違えた数',
|
98
|
+
|
99
|
+
`lastCorrectedTime` datetime DEFAULT NULL COMMENT '最後に正解した時間',
|
100
|
+
|
101
|
+
`lastFalseTime` datetime DEFAULT NULL COMMENT '最後に間違えた時間',
|
102
|
+
|
103
|
+
`word_id` int(11) NOT NULL COMMENT '単語外部キー',
|
104
|
+
|
105
|
+
`user_id` int(11) NOT NULL COMMENT 'ユーザー外部キー'
|
106
|
+
|
107
|
+
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
108
|
+
|
109
|
+
```
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
```SQL
|
114
|
+
|
115
|
+
INSERT INTO `quiz` (`id`, `correctCount`, `falseCount`, `lastCorrectedTime`, `lastFalseTime`, `word_id`, `user_id`) VALUES
|
116
|
+
|
117
|
+
(61, 1, 0, '2022-01-08 13:27:32', NULL, 75, 1),
|
118
|
+
|
119
|
+
(62, 1, 0, '2022-01-08 13:27:32', NULL, 78, 1),
|
120
|
+
|
121
|
+
(63, 1, 0, '2022-01-08 13:27:32', NULL, 76, 1),
|
122
|
+
|
123
|
+
(64, 0, 1, NULL, '2022-01-08 13:27:32', 64, 1),
|
124
|
+
|
125
|
+
(72, 2, 0, '2022-01-09 11:34:30', NULL, 77, 4),
|
126
|
+
|
127
|
+
(73, 3, 0, '2022-01-09 11:34:30', NULL, 85, 4),
|
128
|
+
|
129
|
+
(74, 2, 1, '2022-01-08 17:14:56', '2022-01-08 13:30:00', 75, 4),
|
130
|
+
|
131
|
+
(78, 2, 0, '2022-01-09 11:34:30', NULL, 64, 4),
|
132
|
+
|
133
|
+
(79, 1, 0, '2022-01-08 17:14:56', NULL, 78, 4),
|
134
|
+
|
135
|
+
(80, 1, 0, '2022-01-09 11:34:30', NULL, 76, 4),
|
136
|
+
|
137
|
+
(81, 1, 0, '2022-01-09 11:34:30', NULL, 87, 4),
|
138
|
+
|
139
|
+
(82, 1, 0, '2022-01-09 11:34:30', NULL, 74, 4),
|
140
|
+
|
141
|
+
```
|
142
|
+
|
143
|
+
|
144
|
+
|
17
145
|
逆に言うと、今までまだ一度もユーザーがクイズで回答していない単語について、その単語の単語IDとそのユーザーのユーザーIDを外部キーとして併せ持つレコードはクイズテーブルには存在しません。それを利用して今回の要望を実現したいと考えております。
|
18
146
|
|
19
147
|
(単語自体は、他のユーザーが回答している場合、クイズテーブルに追加されていますが、ユーザーIDの外部キがそのユーザーとは異なる。)
|
@@ -48,19 +176,25 @@
|
|
48
176
|
|
49
177
|
|
50
178
|
|
179
|
+
現在書いているSQL文
|
180
|
+
|
51
|
-
```SQL
|
181
|
+
```SQL
|
52
|
-
|
182
|
+
|
53
|
-
SELECT
|
183
|
+
SELECT w.id, w.word, w.meaning
|
54
184
|
|
55
185
|
FROM words w
|
56
186
|
|
187
|
+
WHERE w.delete_datetime IS NULL AND w.list_id = 1
|
188
|
+
|
57
|
-
|
189
|
+
AND NOT EXISTS (
|
58
190
|
|
59
191
|
SELECT * FROM quiz q
|
60
192
|
|
61
193
|
LEFT JOIN words w ON w.id = q.word_id
|
62
194
|
|
63
|
-
WHERE q.user_id =
|
195
|
+
WHERE w.list_id = 1 AND q.user_id = 1
|
196
|
+
|
197
|
+
AND w.delete_datetime IS NULL
|
64
198
|
|
65
199
|
)
|
66
200
|
|
@@ -69,3 +203,21 @@
|
|
69
203
|
LIMIT 10
|
70
204
|
|
71
205
|
```
|
206
|
+
|
207
|
+
希望するSELECT結果(ユーザーによってこのNOT IN句に指定しなければいけない単語IDが違うため、動的に取得できる上記を書いている)
|
208
|
+
|
209
|
+
```SQL
|
210
|
+
|
211
|
+
SELECT w.id, w.word, w.meaning
|
212
|
+
|
213
|
+
FROM words w
|
214
|
+
|
215
|
+
WHERE w.delete_datetime IS NULL AND w.list_id = 1 AND
|
216
|
+
|
217
|
+
w.id NOT IN("75", "76", "78")
|
218
|
+
|
219
|
+
ORDER BY rand()
|
220
|
+
|
221
|
+
LIMIT 10
|
222
|
+
|
223
|
+
```
|