mysql - 如何对同一字段的不同值进行分组

标签 mysql

我已经写了

 SELECT DISTINCT r.id_destination
               , lo.location1
               , lo.location2
               , lo.destination
               , lo.zip
               , ld.id_field
               , da.identification entity
               , da.data
            FROM pl_records r
            JOIN pl_records_detail rd 
              ON r.id_order = rd.id_order 
       LEFT JOIN pl_attribue at 
              ON rd.product_attribute_id = at.id_product_attribute 
       LEFT JOIN pl_profile pr 
              ON at.id_attribute = pr.id_attribute 
            JOIN pl_location lo 
              ON r.id_address_delivery = lo.id_address 
            JOIN pl_situation si 
              ON r.current_state = si.id_order_state 
       LEFT JOIN pl_location_detail  
              ON r.id_cart = ld.id_cart 
       LEFT JOIN pl_data da 
              ON ld.id_field = da.id_field
           WHERE r.id_record = 6

它返回的输出会因为“entity”和“data”字段包含许多值而重复!

id_destination location1         location2 destination zip id_field entity data
            55 east coast street ON        CN          454       28     89 Please process it with safe standards      
            55 east coast street ON        CN          454       28     90 Payment will be COD
            55 east coast street ON        CN          454       28     78 updates not necessary
            55 east coast street ON        CN          454       28     92 no withdrawal of details
            55 east coast street ON        CN          454       28     99 added records

如何防止值重复?或者是否可以如何对最后两个字段的不同值进行分组

最佳答案

也许您正在寻找group_concat()

SELECT r.id_destination, lo.location1, lo.location2, lo.destination, lo.zip,
       GROUP_CONCAT(DISTINCT ld.id_field) as id_fields,
       GROUP_CONCAT(DISTINCT da.identification) AS entities
da.data
FROM pl_records r JOIN
     pl_records_detail rd
     ON r.id_order = rd.id_order LEFT JOIN 
     pl_attribue at
     ON rd.product_attribute_id = at.id_product_attribute LEFT JOIN
     pl_profile p
     ON at.id_attribute = pr.id_attribute JOIN
     pl_location lo
     ON r.id_address_delivery = lo.id_address JOIN
     pl_situation si
     ON r.current_state = si.id_order_state LEFT JOIN
     pl_location_detail
     ON r.id_cart = ld.id_cart LEFT JOIN
     pl_data da
     on ld.id_field = da.id_field
WHERE r.id_record = 6
GROUP BY r.id_destination, lo.location1, lo.location2, lo.destination, lo.zip

关于mysql - 如何对同一字段的不同值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239094/

相关文章:

mysql - 将文本值视为字段

php - 从mysql获取数据期间Asynctask出错

php - 为什么我的 MySQL 更新查询不起作用?

PHP/MySQL 问题 : Incorrect integer value: '' for column 1

python - docker项目中mysql配置的不同主机值产生不同的错误

mysql - 建议使用替代查询来提高性能?

mysql - 如何在MySQL数据库中存储AES加密信息

sql - 在另一个表的嵌套 SELECT 上执行 NOT IN 时查询速度很慢

php - CodeIgniter 加载时调用模型函数

php - 使用 php exec 从导出的 sql 创建 mysql 数据库