where/having 句で「エイリアス」列を使用する方法について質問があります。関連トピックに関する質問があることは知っています。しかし、私はウェブやstackoverfolwで検索しても解決策が見つかりません。
だから私はこの方法で助けを願っています..
次のステートメントはうまく機能します。
SELECT PHRASE,COUNT(*) AS A
FROM my_statistics
WHERE TIMESTAMP>NOW()-INTERVAL 7 DAY
GROUP BY PHRASE ORDER BY A DESC
LIMIT 16;
PHRASE
とTIMESTAMP
はテーブルの列です。このコードは、過去 7 日間にユーザーが挿入した上位 16 のフレーズを選択します。列 USER も存在するので、複数のユーザーによって挿入された上位 16 のフレーズを選択するのが好きです。だから私はこれを試しました:
SELECT PHRASE,COUNT(*) AS A, COUNT(DISTINCT(USER)) AS B
FROM my_statistics
WHERE TIMESTAMP>NOW()-INTERVAL 7 DAY
AND B>1
GROUP BY PHRASE ORDER BY A DESC
LIMIT 16;
スタックオーバーフローに関する他の質問については、私が使用しなければならない情報が好きですHAVING
SELECT PHRASE,COUNT(*) AS A, COUNT(DISTINCT(USER)) AS B
FROM my_statistics
WHERE TIMESTAMP>NOW()-INTERVAL 7 DAY
GROUP BY PHRASE ORDER BY A DESC
HAVING B>1
LIMIT 16;
しかし、これはエラーを返します:
SQL 構文にエラーがあります。5 行目の 'HAVING B>1 LIMIT 16' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
正しい構文がどのようになるのか、私にはわかりません。ここでどんな種類の助けも願っています。ありがとうございました!