mysql のクエリいろいろ

(2025-07-16)

mysql に英単語などを記録してアプリを作成しています。

使い勝手を良くするためにデータベースに対する命令(クエリ)を作成するのですが、面倒なのでいつも chatGPT に依頼しています。

でも、いつも質問するのも面倒なので、代表的なものをいくつか記録しておきたいと思います。

group 化してカウントする

英単語データベースに grade を付けていますが、その grade ごとに集計します。

SELECT grade, COUNT(*) AS count
FROM wordlists
GROUP BY grade
ORDER BY count DESC;

2 つのテーブルを結合して group 化してカウント

現在、単語テストのテーブルには単語そのものを記録していません。 vocabulary_id として記録しています。

なので、2 つのテーブルを結合してカウントします。

SELECT
wl.word,wl.grade,
COUNT(*) AS incorrect_count
FROM
word_tests wt
JOIN
wordlists wl ON wt.vocabulary_id = wl.id
WHERE
wt.evaluation != '○'
GROUP BY
wl.word
ORDER BY
incorrect_count DESC;

B1 でも全然憶えられない単語がいっぱいあります。数字は間違った回数です。

正解するまでトライすればいいんですが、何らかの引っ掛かりがないと簡単には憶えられません。

文字列の「照合順序(collation)」が異なる場合の update

UPDATE tokens
JOIN STEP.wordlists
ON tokens.lemma COLLATE utf8mb4_unicode_520_ci = wordlists.word COLLATE utf8mb4_unicode_520_ci
SET tokens.grade = wordlists.grade;