2014-10-02 68 views
2

我有以下MySQL查詢ORDER GROUP_CONCAT使用WHERE在使用值

SELECT cibor_users.ID, 
    cibor_users.display_name, 
    cibor_users.user_email, 
    cibor_users.user_url, 
GROUP_CONCAT(meta_value) AS customer_address 
FROM cibor_users 
    JOIN cibor_usermeta ON cibor_users.ID = cibor_usermeta.user_id 
WHERE cibor_usermeta.meta_key IN ('paupress_address_one_1','paupress_address_city_1','paupress_address_state_1','paupress_address_postal_code_1','telephone','user_type','primary_business','realtor_designation') 
GROUP BY cibor_usermeta.user_id 

的信息,然後在表中顯示:

<td ><?php echo $row['display_name'];?></td> 
<td ><?php echo $row['user_url'];?></td> 
<td ><?php echo $row['user_email'];?></td> 
<td ><?php echo $row['customer_address'];?></td> 

的問題是,在「WHERE」值語句隨機顯示並不一致。所以我添加了ORDER BY語句:

SELECT cibor_users.ID, 
    cibor_users.display_name, 
    cibor_users.user_email, 
    cibor_users.user_url, 
GROUP_CONCAT(meta_value ORDER BY meta_value ASC SEPARATOR ' ') AS customer_address 
FROM cibor_users 
    JOIN cibor_usermeta ON cibor_users.ID = cibor_usermeta.user_id 
WHERE cibor_usermeta.meta_key IN ('paupress_address_one_1','paupress_address_city_1','paupress_address_state_1','paupress_address_postal_code_1','telephone','user_type','primary_business','realtor_designation') 
GROUP BY cibor_usermeta.user_id 

但是,這個字母順序是我爲「Customer_Address」所需的信息。我需要按照與放在「WHERE」語句中相同的順序顯示信息。

我嘗試使用ORDER BY FIELD

WHERE cibor_usermeta.meta_key IN ('paupress_address_one_1','paupress_address_city_1','paupress_address_state_1','paupress_address_postal_code_1','telephone','user_type','primary_business','realtor_designation') 
ORDER BY FIELD (cibor_usermeta.meta_key, ['paupress_address_one_1','paupress_address_city_1','paupress_address_state_1','paupress_address_postal_code_1','telephone','user_type','primary_business','realtor_designation']) 
GROUP BY cibor_usermeta.user_id 

是否有指定基礎上,凡在聲明的級聯信息的確切順序的方法嗎?

+2

大的問題,認真撰寫等,歡迎堆棧溢出! – 2014-10-02 19:10:45

回答

1

你必須做的時候的情況下,您的訂單子句中

group_concat(meta_value 
      order by 
      case meta_key when 'paupress_adress_one1' then 0 
          when 'paupress_address_city_1' then 1 
          when 'paupress_address_state_1' then 2 
          --etc. 
      end 
      separator ' ') 
+0

完美!謝謝! – 2014-10-02 19:30:50