2012-10-05 77 views
0

在這裏,我面臨着一個與group_concat有關的巨大問題,因爲當我使用這個總記錄不能從基於事務ID的表中獲取 這裏是我的存儲過程代碼在部份我使用所謂strSplit拆分功能很迫切的任何一個可以幫我這個嚴重的問題,對我來說group_concat創建一個問題獲取多個記錄


BEGIN 

DECLARE iCount int; 

DECLARE i int; 

DECLARE txn VARCHAR(65000); 

DECLARE txId VARCHAR(17); 

CREATE TEMPORARY TABLE report_transaction (client_id INT NOT NULL AUTO_INCREMENT, productName VARCHAR(200), itxnId VARCHAR(100),PRIMARY KEY(client_id)); 

select count(distinct(tt.TxnId)) into iCount from tbl_transaction tt; 

SELECT group_concat(distinct((tt.TxnId)) separator ', ') product into txn from tbl_transaction tt; 

SET i=1; 

WHILE i<iCount+1 DO 

select strSplit(txn, ',', i) into txId; 

SELECT RTRIM(LTRIM(txId)); 

INSERT INTO report_transaction(productName,itxnId) select group_concat((tt.ProductName) separator ',') products,tt.TxnId from tbl_transaction tt where tt.TxnId= txId; 

    SET i = i + 1; 

END WHILE; 

    SELECT * FROM report_transaction; 
    drop table report_transaction; 

END 

Iwant導致像一個表的記錄,但只顯示第一個記錄,然後等領域爲空

回答

0

I想你想要的東西可以通過一個單一的查詢來實現:

INSERT INTO report_transaction(productName,itxnId) 
    select group_concat((tt.ProductName) separator ',') as products, tt.TxnId 
    from tbl_transaction tt 
    group by tt.TxnId; 

你不需要臨時表來存儲的ID,或修剪或拆分任何東西。

一般而言,通過在適當的時候使用SQL查詢,您將獲得更好的性能。順便說一下,如果你確實需要遍歷表中的行,那麼你應該瞭解遊標。

+0

沒有它產生相同的結果 – user1161960

+0

你應該修改你的問題,或問另一個,包括樣本數據和結果。 –

+0

先生,我的問題是函數group_concat產生一次輸出在哪裏條件如何解決它 – user1161960