我有下表:
GENRES gID | gNAME 1 | Fiction 2 | Non-Fiction 3 | Comedy 4 | Horror
这个表
PRODUCTS pID | pNAME 1 | 4 hour work week 2 | screw it let's do it
然后是分配表:
ASSIGNTABLE aID | pID | gID 1 | 1 | 1 2 | 1 | 2 3 | 2 | 2 4 | 2 | 3 5 | 2 | 4
我需要一个返回以下内容的查询:
pID | pNAME | pGENRE 1 | 4 hour work week | Fiction 2 | screw it let's do it | Non-Fiction
换句话说,我只需要为每个产品获得一种类型。我该怎么做?
答案 0 :(得分:2)
如上面的评论中所述,MySQL表是无序的。如果您使用“第一个”表示您想要具有最小gID
的流派,则可以使用子查询将ASSIGNTABLE
分组为pID
并确定所需的流派:
SELECT PRODUCTS.*, GENRES.gNAME
FROM PRODUCTS
JOIN ( SELECT pID, MIN(gID) gID FROM ASSIGNTABLE GROUP BY pID ) t USING (pID)
JOIN GENRES USING (gID)
在sqlfiddle上查看。