1
最後のnヶ月間にユニークな選手の上位3つの得点を取得しようとしています。私はエラーを取得していますクエリを実行しようとしている間:mysqlの副問合せ問題
不明な列「f.SC_Date」「WHERE句」以下
はあなたがすることはできません
SELECT * from scores f
WHERE
SC_Id IN (
SELECT SC_Id FROM (
SELECT SC_Id from scores where DATE_FORMAT(SC_Date, "%Y%m") = DATE_FORMAT(f.SC_Date, "%Y%m") AND US_Id != 0 ORDER BY SC_Score DESC
LIMIT 3
) AS u)ORDER BY DATE_FORMAT(SC_Date, "%Y%m") DESC, SC_Score DESC
外部クエリが必要ですか? - 私はMySQLのクエリの構造を完全には理解できないかもしれませんが、サブクエリに "DISTINCT"を追加すると、外側のクエリはまったく必要ありません。 – Aurimas
構文を修正してもこのクエリは大きなテーブルでは非常に遅いです。それを完全に書き直すほうがよいでしょうが、正確に何を得たいかを明確にしなければならないでしょう。 – piotrm
それはむしろ恐ろしいように見えますが、実際に何を探していますか?スコア表があると思われ、特定の日付の場合はトップ3が必要です。しかし、内側のクエリへの "f"エイリアスの "sc_date"が不明確であるためです。あなたはスコア表で毎日トップ3の得点を探していますか?あなたが20日間のスコアを持っていれば、20日間のうちの3日間が必要です。全く異なるクエリが必要です。 – DRapp