MySql视图显示部分列数据

时间:2013-03-07 08:57:05

标签: mysql views

对于Wordpress / Woocommerce网上商店,我创建了一个显示以下订单的数据透视图:

CREATE VIEW vwOrderPivot AS
SELECT  
    PM.post_id,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_first_name',PM.meta_value,NULL)) AS FirstName,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_last_name',PM.meta_value,NULL)) AS LastName,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_address_1',PM.meta_value,NULL)) AS Address,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_postcode',PM.meta_value,NULL)) AS Postcode,
        GROUP_CONCAT(IF(PM.meta_key = '_billing_phone',PM.meta_value,NULL)) AS Phone,
        GROUP_CONCAT(IF(PM.meta_key = '_order_total',PM.meta_value,NULL)) AS OrderTotal,
        GROUP_CONCAT(IF(PM.meta_key = '_pickup_location',PM.meta_value,NULL)) AS PickupLocation,
        GROUP_CONCAT(IF(PM.meta_key = '_pickup_time',PM.meta_value,NULL)) AS PickupTime,
        GROUP_CONCAT(IF(PM.meta_key = '_order_items',PM.meta_value,NULL)) AS OrderItems
FROM    goe_postmeta AS PM
GROUP BY PM.post_id

只有一个小问题。 de OrderItems(序列化字段)中的数据仅包含Original字段中的一半数据。有什么方法可以解决这个问题吗?我没有线索。有人能指出我正确的方向吗?

亲切的问候。

2 个答案:

答案 0 :(得分:1)

MySQL docs告诉您,GROUP_CONCAT()输出的大小仅限于group_concat_max_len系统变量的长度。这不止一次地困扰我。

答案 1 :(得分:1)

作为documented

  

结果被截断为由。给出的最大长度   group_concat_max_len系统变量,其默认值为   1024.该值可以设置得更高,尽管返回值的有效最大长度受值的约束   max_allowed_pa​​cket的。更改值的语法   group_concat_max_len在运行时如下,其中val是一个   无符号整数:

SET [GLOBAL | SESSION] group_concat_max_len = val;

所以这里你是一个解决方法,尽管最好的最终解决方案是在从PHP读取时重写查询和组行。