我有不同'manufacturer'
字段的重复记录。我正在尝试 GROUP BY i.stocknumber
但这只会删除一条记录,而不会收集其他制造商的结果。
某些记录具有 NULL
制造商字段,我尝试在子查询中使用 GROUP_CONCAT
来消除“制造商”的不同结果。
这是我当前的查询:
SELECT i.id,i.stocknumber,m.manufacturer
FROM inventory i
INNER JOIN makes mk on i.make = mk.id
INNER JOIN models md on i.model = md.id
INNER JOIN classes cl on i.class = cl.id
LEFT JOIN (
SELECT idm.id, idm.inventory_id, dm.manufacturer AS 'manufacturer'
FROM display_manufacturers dm
INNER JOIN inventory_display_manufacturers idm ON dm.id = idm.display_manufacturer_id
) m ON i.id = m.inventory_id
-- GROUP BY i.stocknumber
ORDER BY i.stocknumber
我得到的结果是:
对于通过连接manufacturer
字段对重复记录进行分组有什么想法吗?
(注意:我已经在子查询上尝试了GROUP_CONCAT
)
期望结果:
id | stocknumber | manufacturer
----------------------------------
946 | 011A | NULL
907 | 1001 | Sports Coach, Coachmen
1032 | 1001x | Sports Coach
等等......
最佳答案
你在找这个吗?
SELECT i.id, i.stocknumber, group_concat(distinct m.manufacturer) as manufacturers
. . .
GROUP BY i.stocknumber
编辑:
此版本明确使用您的查询作为子查询。它不应该将所有制造商放在同一行:
select stocknumber, group_concat(distinct manufacturer) as manufacturers
from (SELECT i.id,i.stocknumber,m.manufacturer
FROM inventory i
INNER JOIN makes mk on i.make = mk.id
INNER JOIN models md on i.model = md.id
INNER JOIN classes cl on i.class = cl.id
LEFT JOIN (
SELECT idm.id, idm.inventory_id, dm.manufacturer AS 'manufacturer'
FROM display_manufacturers dm
INNER JOIN inventory_display_manufacturers idm ON dm.id = idm.display_manufacturer_id
) m ON i.id = m.inventory_id
) t
GROUP BY stocknumber ;
关于php - MySQL子查询拉取多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24810743/