我試過適應從SELECT biggest row from a LEFT JOIN和mysql: How to INNER JOIN a table but limit join to 1 result with the highest vote or count?解決方案,但無法弄清楚。mysql左加入只選擇最高從左表
我連接兩個表,一個被連接有兩個重複的行,唯一的區別是場「PAGE_ID」 - 我想一個最高PAGE_ID數
tagID page_id companyID teamID companyID
1510 289 16 9 16
1418 163 16 9 16
(還有其他的文字領域我想,但是這些不匹配這樣用排除他們在這裏)
我原來的查詢是
SELECT * FROM `cms_company_tags`
LEFT JOIN `cms_companies` ON `cms_companies`.`companyID`=`cms_company_tags`.`companyID`
WHERE `cms_company_tags`.`teamID`='9'
ORDER BY `cms_companies`.`companyName` ASC
其中選擇兩行
tagID page_id companyID teamID newsID companyID
1510 289 16 9 0 16
1418 163 16 9 0 16
我已經試過
Select cms_company_tags.*, cms_companies.*
From cms_company_tags
Left Join cms_companies
On cms_companies.companyID = cms_company_tags.companyID
And cms_companies.page_id = (
Select Max(t.page_id)
From cms_companies As t
Where t.page_id = cms_company_tags.page_id
GROUP BY cms_company_tags.tagID
ORDER BY cms_company_tags.tagID DESC
)
WHERE `cms_company_tags`.`teamID`='9'
ORDER BY `cms_companies`.`companyName` ASC
和
SELECT * FROM `cms_company_tags`
LEFT JOIN `cms_companies` ON `cms_companies`.`companyID`=`cms_company_tags`.`companyID`
AND `cms_companies`.`page_id` = (SELECT MAX(page_id) AS pageID from `cms_companies` where `cms_companies`.`page_id` = `cms_company_tags`.`page_id`)
WHERE `cms_company_tags`.`teamID`='9'
ORDER BY `cms_companies`.`companyName` ASC
這兩者返回
tagID page_id companyID teamID newsID companyID
1510 289 16 9 0 NULL
1418 163 16 9 0 16
與所有的文本字段爲空太
我想要唯一最高的page_id。如果文本字段是最高字符而不是最低字符,那麼我可以使用與NULL相同的重複行。
編輯:
雖然這種解決方案從返回它過濾掉重複的,幸運的是我,我需要未受影響的文本部分最低速PAGE_ID。希望在這裏張貼這部分解決方案是有用的人
SELECT * FROM cms_company_tags INNER JOIN( SELECT companyID,公司名稱,page_path,MAX(PAGE_ID)AS MaxPageID FROM cms_companies GROUP BY cms_companies.page_id ) MaxPages ON cms_company_tags.companyID = MaxPages.companyID AND cms_company_tags.page_id = MaxPages.MaxPageID AND cms_company_tags.teamID = 9 ORDER BY MaxPages。 companyName
ASC
真的很近,這... SELECT * FROM cms_company_tags INNER JOIN(SELECT companyID,公司名稱,MAX(PAGE_ID)AS MaxPageID FROM cms_companies GROUP BY cms_companies.companyID)MAXPAGES ON cms_company_tags.companyID = MaxPages.companyID AND cms_company_tags.page_id = MaxPages.MaxPageID AND cms_company_tags.teamID = 9 ...有效,但仍選擇最低的page_id ??? – JulianB
調整你的代碼,返回最低page_id,但幸運的是我需要提取的文本字段是相同的,因此在我的特殊情況下如此作品....謝謝 – JulianB