INNER JOIN
テーブルから単一の行を取得しようとしています。クエリは、コード行を追加するまで行を返しますがLIMIT 1
、その後は何も返さず、意味がありません。これが私のコードです。
SELECT DISTINCT pd.pid, fv.flow_bmi, fv.flow_date
FROM patient_data pd
INNER JOIN ( ... )
INNER JOIN (
SELECT pid, flow_bmi, flow_date
FROM flow_vitals
ORDER BY flow_date DESC
) fv ON fv.pid = pd.pid
#Results
-------------------------------
pid | flow_bmi | flow_date
-------------------------------
6073 | 31.90 | 2011-11-06
6073 | 33.10 | 2011-11-05 <-- I don't want this row returned
6072 | 32.10 | 2011-08-01
そして今、私が追加するとLIMIT 1
SELECT DISTINCT pd.pid, fv.flow_bmi, fv.flow_date
FROM patient_data pd
INNER JOIN ( ... )
INNER JOIN (
SELECT pid, flow_bmi, flow_date
FROM flow_vitals
ORDER BY flow_date DESC
LIMIT 1
) fv ON fv.pid = pd.pid
#Expected Outcome
-------------------------------
pid | flow_bmi | flow_date
-------------------------------
6073 | 31.90 | 2011-11-06
6072 | 32.10 | 2011-08-01
#Actual Outcome
-------------------------------
pid | flow_bmi | flow_date
-------------------------------
No rows returned.
なぜこれが壊れるのかわかりません。LIMIT
私が本当に欲しいのはINNER JOIN
、最新の日付に基づいて 1 行だけを返す です。この同じトピックについてたくさんの質問があるようですが、最終的に使用するMAX()
かLIMIT
、どちらもうまくいきませんでした。