mysql - group_concat 多次?

标签 mysql left-join group-concat

我正在尝试创建一个 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/

相关文章:

MySQL seek-then-scan 优化 Limit Offset

php - 将 JSON 解码为 PHP 数组,删除相同的条目并编码回 PHP

mysql - 连接表上 2 列的唯一键

mysql - 是否可以在来自 3 个表的 SQL 查询中使用两个 COUNT 和两个 JOIN?

mysql - 连续三个左连接返回意外结果

mysql - phpMyAdmin:如何检查字段是否有索引?

MySql 带条件的左外连接

Mysql Group Concat ...没有得到我需要的结果

php - 在 mysql 中选择 GROUP_CONCAT

mysql - 组函数的无效使用(group_concat 和 MySQL)