※過去ブログの転記
MySQLを使って表題の件をやりたかったけど1054 Unknown column
でうまく動かなかったので忘れないようにメモ
ID | user_id | point |
---|---|---|
1 | 1 | 30 |
2 | 1 | 40 |
3 | 1 | 4 |
4 | 1 | 6 |
5 | 2 | 3 |
6 | 2 | 7 |
上記のようなテーブルを使用して以下結果のように合計を出してからWHERE句で抽出条件を指定する
user_id | total |
---|---|
1 | 80 |
2 | 10 |
SELECT user_id, SUM(point) AS total FROM user_points WHERE total LIKE '%1%' GROUP BY user_id
↓ エラーが出るので修正
SELECT * FROM (SELECT user_id, SUM(point) AS total FROM user_points GROUP BY user_id) AS T1 WHERE total LIKE '%1%'
実行結果
user_id | total |
---|---|
2 | 10 |
要点
WHEREの中では集計関数(SUM()
,AVG()
など)やカラムのエイリアスを参照できない
そもそもSELECTの実行順序についても毎度ググってるレベルの曖昧さなので次の記事くらいでちゃんと整理しておきたい