mysql - GROUP CONCATen 多行

标签 mysql sql select group-concat

我使用的是 MySQL 5.1.66,我想出了一个选择查询来选择所有男士衬衫及其尺寸和价格。我使用 GROUP CONCAT 将尺寸列和价格列从其父表合并到同一列中。这是我的声明

SELECT shirts.shirt_name, shirts.men AS main_photo, 
       GROUP_CONCAT(shirt_sizes.size_name,shirt_prices.price) AS sizes
FROM shirts 
JOIN shirts_link ON shirts_link.shirt_id=shirts.id
JOIN shirt_sizes ON shirt_sizes.id=shirts_link.size_id
JOIN shirt_prices ON shirt_prices.id=shirts_link.price_id
WHERE shirts.men!='' AND shirts_link.adult='y'
GROUP BY shirts.id

通过这样做,尺寸列和价格列仍然是 select 语句中该列中的两个单独的实体吗?我注意到的另一件事是尺寸的顺序全部混淆了。例如,这是其中一列中的一行

medium29.22,large29.22,1x-large29.22,2x-large30.44,small29.22,3x-large31.70

为什么它不像 table 上排列的那样从小 3x 开始?我想,如果我试图通过 PHP 将其注入(inject)我们的网站,如果它要自动加载,它也会以这种无组织的方式进行。我该如何解决这个问题?

我的最终目标是能够创建一个选择,可以将每一行自动填充到我创建的 JavaScript 应用程序中。我需要将衬衫名称、主图片、每个尺寸和价格加载到我为它们编码的 div 中。如果您需要查看正在使用的实际表格,请告诉我。预先感谢:)

最佳答案

group_concat 函数的首要目的是在分组操作中保留特定列的所有值。例如,

Table1
ID   field1    field2
1     ram      science
2     ramesh   maths
1     ram      maths

如果您的要求是获取特定人的主题,那么 GROUP_CONCAT 将产生如下结果,

ID  field1   field3
1   ram      science,maths
2   ramesh   maths

希望这能提供一些见解

关于mysql - GROUP CONCATen 多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100631/

相关文章:

mysql - 无法从另一个表更新表

mysql - 检查 MySQL 中的 JSON 值是否为空?

java - JSoup 从 unix 中的 HTML 选择

mysql - 如何准确选择用户名和密码注意大小写字母 - mysql

mysql - 数据截断 : Incorrect date value:

mysql - 使用 WHERE IS NULL 和 LIMIT 执行更新时可能发生冲突?

mysql - 如何在同一查询中获取返回行数和数据的 count()

javascript - SelectPicker - 如果结果与 bootstrap-select 不匹配,则选择选项实时搜索

php - MySQL 循环或嵌套查询

mysql - 每天获得最多点赞的行