我有兩個表,SQL加入其中id等於ID和日期是最大
---Jobs---
id,name,.....
---Locations---
id,jobId,Location,date
現在的工作能有一個以上的位置,我想加入的工作與它的最新的位置在那裏jobs.id=location.jobId
和date
是最大。
我有兩個表,SQL加入其中id等於ID和日期是最大
---Jobs---
id,name,.....
---Locations---
id,jobId,Location,date
現在的工作能有一個以上的位置,我想加入的工作與它的最新的位置在那裏jobs.id=location.jobId
和date
是最大。
可能是:
SELECT *
FROM Jobs J, Locations L
WHERE J.id=L.jobId
AND L.date = (
SELECT MAX(date)
FROM Locations L2
WHERE L2.jobId=L.jobId
GROUP BY L2.jobId)
說明:
在嵌套查詢我選擇爲每個作業的最大日期。
在外部查詢我加入兩個表,只提取日期等於MAX(日期)我發現嵌套查詢和作業是相同的行。這是由條件L2.jobId = L.jobId
我得到這個錯誤 #1267 - 排序規則的非法組合(utf8_unicode_ci ,IMPLICIT)和(utf8_general_ci,IMPLICIT)進行操作'=' – user3032474
是的,我可能忘記了使用Group By。查詢已更新。 順便說一句,錯誤看起來像你的表有不同的排序規則。一個有utf8_unicode_ci,另一個有utf8_general_ci。儘量讓他們相同的排序規則。這裏解釋http://stackoverflow.com/questions/1241856/illegal-mix-of-collations-error-in-mysql –
雅改爲排序和它的工作,謝謝 – user3032474
試試這個:
select * from jobs inner join locations on jobs.id=locations.jobid order by date desc limit 1;
同 我得到這個錯誤 #1267 - 非法的歸類組合(utf8_unicode_ci,隱含的)和(utf8_general_ci,隱含的)操作「=」 – user3032474
你也有問題嗎? (希望不僅僅是'爲我做') –
你已經知道你想使用sql連接。快速谷歌搜索提供了第1頁上的20個條目,其中介紹瞭如何完全按照您的要求進行連接。 – Dave
這不是很清楚,但我猜他/她的問題是如何獲得最新的位置,而不是實際的加入? – Shai