2015-10-17 47 views
-2

我新的SQL,所以我也不太清楚如何去這個查詢,我必須做的...... 我有多個表中,所有具有2列,我想利用(date_addedpath)。mSQL的查詢從另一個MSL查詢

所以我做了一個Union select ("date_added" and "path")爲每個表。所以,我現在有所有我想要的表中的所有行的表:

SELECT `date_added`, `path` FROM `art_1` UNION SELECT `date_added`, `path` FROM `art_5484` 

這工作得很好,但現在我需要得到最低的日期(我用的分功能)的行。所以我想從我最後一次查詢中得到的表格上做選擇,所以我這樣做:

SELECT `path` 
FROM cross_join = (SELECT `date_added`, `path` FROM `art_1` UNION SELECT `date_added`, `path` FROM `art_5484`) 
WHERE `date_added` = MIN(`date_added`) 

但是這不起作用;我猜這是一個語法錯誤,但我看不到的地方...
如果有人可以幫助我,那將是偉大的!拿到最小日期

+0

當你說「這是行不通的」,它返回一個令人失望的結果,或錯誤? – Reisclef

+0

交叉連接應該是什麼? –

+0

@ Reisclef它返回一個錯誤,語法錯誤,但我看不到的地方...... – Jackymamouth

回答

1

的一種方法是使用order bylimit

SELECT `path` 
FROM (SELECT `date_added`, `path` FROM `art_1` UNION ALL 
     SELECT `date_added`, `path` FROM `art_5484` 
    ) a 
ORDER BY date_added DESC 
LIMIT 1; 

注:這僅返回一個值,即使當有重複。另外,我將UNION更改爲UNION ALL。您應該默認使用UNION ALL,因爲UNION會導致刪除重複項的開銷。

+0

這是完美的,非常感謝! 是否有可能通過此方法檢索第二個最近的'date_added'? – Jackymamouth

+0

發現如何讓N個最近的'date_added':只需添加'OFFSET N;'你的代碼的末尾。再次感謝 – Jackymamouth