2012-10-11 50 views
1

首先,mysql變量在我的系統中不起作用,我不知道爲什麼,並且如果它是配置問題,我無法嘗試修復它,所以我想嘗試另一種方式來解決我的問題,而不使用它們。在mysql中選擇最上面一行而不使用變量

讓我們假設我有:

Table A 
id - auto_increment 
job_id - integer 
other columns 

Table B 
date - timestamp 
event - integer 
A_id - integer (with table A id) 

基本上我想每一行選擇一次/一個特定JOB_ID表A的列,但我還需要一個列從表B中的最近事件中的每一行

我曾經在另一個系統中使用了變量,但是我所有的嘗試都沒有成功。

在此先感謝您的任何提示。

PS: 這不是我的問題,但如果有人感到好奇我的問題與變量...

很長一段時間得到錯誤的結果與我試圖解決我的問題,我這樣做後:

select if(@p, @p:[email protected]+1, @p:=1) as cnt, t.any_column from any_table t 

和我的cnt列總是等於1.也許我很累....或者有問題的變量..如果必須打賭我選擇第一個選項。

回答

1

這個想法背後是使用MAX函數獲取subquery中的最近日期,並將它加入到tableA和tableB中。試試這個,

SELECT a.*, c.* 
FROM TableA a 
     INNER JOIN 
     (
      SELECT A_ID, MAX(`DATE`) recentDate 
      FROM TableB 
      GROUP BY A_ID 
     ) b ON a.ID = b.A_ID 
     INNER JOIN TableB c 
      ON b.A_ID = c.A_ID AND 
       b.recentDate = c.`DATE` 
+0

它工作得很好......不錯的做法!非常感謝! –

+0

@GustavoVargas歡迎您! –