2
我有很少的數據表中的工作,一個MySQL存儲過程:SQL存儲過程 - 變量太短
SQL Fiddle Demo - >感謝馬哈茂德·賈邁勒此。
的問題是,這precedure不能與許多工作的元數據:
CREATE TABLE Metadata (`metadata_id` int, `metadata_name` varchar(25)) ;
INSERT INTO Metadata
(`metadata_id`, `metadata_name`)
VALUES
(1, 'duration'),
(2, 'extension'),
(3, 'size'),
(4, 'duration2'),
(5, 'extension2'),
(6, 'size2'),
(7, 'duration3'),
(8, 'extension3'),
(9, 'size3'),
(10, 'duration4'),
(11, 'extension4'),
(12, 'size4'),
(13, 'duration5'),
(14, 'extension5'),
(15, 'size5'),
(16, 'duration6'),
(17, 'extension6'),
(18, 'size6')
;
似乎與@聲明會話變量是太短了!
而這張表最後將有大約150個元數據。
SET @sql = NULL;
SET @cols = NULL;
SELECT
GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(m.metadata_name = ''',
m.metadata_name, ''', v.value, 0)) AS ', '''', m.metadata_name, '''')
) INTO @cols
FROM Metadata AS m;
SET @sql = CONCAT('
SELECT
v.file, ', @cols ,'
FROM `values` AS v
INNER JOIN metadata AS m ON v.metadata_id = m.metadata_id
GROUP BY v.file');
prepare stmt
FROM @sql;
execute stmt;
兩個變量@sql
和@cols
簡單的場景,如在本演示做工精細,但對我來說我有150元,在這種情況下,我得到了一個錯誤,該變量太短。
如何聲明這兩個變量,以便他們把這個來自串聯150個元數據名稱的太長文本?
在此先感謝
非常驚人的..謝謝你!並感謝Mahmoud的編輯!我希望下一次這是我會幫助你;) – 2013-04-26 07:55:16