我正在尝试创建一个 MySQL 查询,该查询使用不同的 group_concat 和来自同一 LEFT JOIN 的数据。一个示例表可能是:
汽车表 carid |车牌
轮胎表(指旧轮胎) carid |型号 |宽度
我想从这些表中获取按宽度分类的轮胎型号列表,因为只有两种不同的可能宽度,我正在从汽车卡片页面加载它。
SELECT name,
if(width=205,group_concat(model ORDER BY model ASC),'') as width_205,
if(width=225,group_concat(model ORDER BY model ASC),'') as width_225,
FROM cars
LEFT JOIN tires ON cars.carid=tires.carid
WHERE carid='10'
我希望我的解释是清楚的。这句话不能正常工作,我不知道是因为语法不好还是我根本不能这样使用 group_concat。
好的,感谢您的阅读,我将等待您的答复。提前致谢!
最佳答案
尝试
SELECT name,
GROUP_CONCAT(CASE width WHEN 205 THEN model ELSE NULL END CASE AS model ORDER BY model) as width_205,
GROUP_CONCAT(CASE width WHEN 225 THEN model ELSE NULL END CASE AS model ORDER BY model) as width_225,
FROM cars
LEFT JOIN tires ON cars.carid=tires.carid
WHERE carid='10'
GROUP BY name
得到你想要的。我没有方便测试的 MySQL。您可能不得不愚弄(甚至放弃)内部 ORDER BY。
或者,您可以通过以下方式取回两行(如果添加了第三个大小,则不必更改您的 SQL):
SELECT name, width, GROUP_CONCAT(model ORDER BY model) AS Models
FROM cars
LEFT JOIN tires ON cars.carid=tires.carid
WHERE carid='10'
GROUP BY name, width
关于mysql - group_concat 多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419407/