2014-03-27 80 views
0

我試圖爲每個組獲得一個結果,但它返回多個結果。在這裏我聲明SQL查詢:每個組的單個行

SELECT in_id, in_name, ig_id, ig_name, di_name, iv_id, iv_reading, iv_date, iv_time 
FROM `instruments` 
JOIN instrument_group ON ig_id = in_igid 
LEFT JOIN instrument_reading ON iv_inid = in_id AND date(iv_date) = date(20130301) 
RIGHT JOIN dam_info ON di_id = ig_diid 
WHERE ig_id = in_igid 

這裏輸出 enter image description here

,你可以在上面看到,該in_id 6有兩個結果,我只想要一個是表instrument_reading的最新成果。

更新:表架構

enter image description here

你的幫助是非常讚賞。

回答

0
SELECT in_id, in_name, ig_id, ig_name, di_name, iv_id, iv_reading, iv_date, iv_time 
FROM `instruments` 
JOIN instrument_group ON ig_id = in_igid 
LEFT JOIN (SELECT iv_id, iv_inid, iv_reading,iv_date, iv_time FROM instrument_reading  WHERE date(iv_date) = date(20130301) ORDER BY iv_time DESC LIMIT 1) as latestDt ON latestDt.iv_inid = in_id 
LEFT JOIN dam_info ON di_id = ig_diid 
WHERE ig_id = in_igid 

我用這個作爲臨時解決方案。我打開這個給你,如果你有更好的辦法