0
我有一個表是這樣的:MySQL的:使用行的子集,以覈對where子句
----------------------------------------
|uID|responseDate|field_01|field_02|etc|
+---+------------+--------+--------+---+
| 1 | 2011-12-02 | yes | no | |
| 2 | 2011-11-25 | no | yes | |
| 1 | 2012-01-02 | no | yes | |
| 2 | 2012-12-01 | no | no | |
| 3 | 2010-01-02 | yes | no | |
+---+------------+--------+--------+---+
我想獲得UID和responseDates爲誰field_01的最新迴應是肯定的 - 所以我的查詢應該返回:
------------------
|uID|responseDate|
+---+------------+
| 3 | 2010-01-02 |
+---+------------+
我使用的是內部聯接,但不正確。這裏是我的查詢:
SELECT f.uID, f.responseDate
FROM form_05 as f
INNER JOIN (
SELECT uID, max(responseDate) AS latest_date
FROM form_05
WHERE field_01 = 'yes'
GROUP BY uID) dmax
ON dmax.uID = f.uID and dmax.latest_date = f.responseDate
ORDER BY f.uID ASC;
這是什麼返回,但是,對每個UID其中field_01是肯定的,即:
------------------
|uID|responseDate|
+---+------------+
| 1 | 2011-12-02 |
| 3 | 2010-01-02 |
+---+------------+
最新的條目,但我不希望這樣。我想這樣做只有每個uID的最新條目纔有資格參加測試。我如何重構查詢?任何指針都非常感謝。
這實施─謝謝!我現在正在解析它,試圖理解我最初嘗試的區別。再次感謝! – yycroman 2012-02-08 05:41:25
所以,移動連接之外的Where子句是我能找到的唯一區別。那是什麼? – yycroman 2012-02-08 05:43:36
說實話...我沒有看你的代碼:)但顯然你不是使用左連接,我認爲這是必須在這些情況下。現在,我看到你的代碼,我注意到你真的在哪裏真的接近! – 2012-02-08 05:50:26