我使用的是 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/