2011-11-03 63 views
-1

我想概念化如何設置3個表的UNION,這將允許以條紋方式排序。MySQL的結果條帶化UNION

前5從表的UNION A,B,C 與結果排序如下所示:

一個 乙 Ç 一個 乙 Ç ....

這算哪門子與SQL和更具體的MySQL的事possibe的?

回答

0

就我個人而言,我會將這三個查詢單獨提取出來,然後通過它們以您最喜歡的編程語言進行處理。查詢應該像這樣運行得更快,因爲它們不會那麼複雜。

它應該只能使用SQL,儘管通過在你的輸出中爲這三個查詢中的每一個添加一些列,然後將整個包裝包裝在外部選擇中,例如;

SELECT * FROM (<PUT THE FULL UNION HERE>) ORDER BY table_name, row_count 

你需要改變每個這樣的查詢;

@@rowCount=0; 
SELECT 'A' AS table_name, (@@rowCount+1) AS row_count, <remaining fields> 
FROM table_A; 

現在,我不能完全確定語法的遞增行計數器,但我已經看到了它在其他地方做了(可能在計算器上的某個地方),所以也許別人可以用一部分幫助嗎? (或者你可以通過搜索這個網站找到答案......)

+0

哦,是啊,呃。從每個分配行號中拉出記錄,然後按行號和表格指示符分組。我會爲rowCount賦值做更多的SO探討。 – emaynard

+0

如果您發現rowCount thingumy的工作解決方案很好,請更新您的問題,或者在此處發表評論以回答我的答案,然後我會更新答案以包含正確的語法。 –

+0

也許我在答案檢查時跳得太快了。這讓我幾乎在那裏。它不會重置rowCount,但您可以獲得一組增量排名值。 'SELECT * FROM( SELECT @rownum:= @rownum + 1 AS排名, 'A' AS t_name FROM TABLEA噸 JOIN(SELECT @rownum:= O)R; UNION SELECT @ ROWNUM:= @rownum + 1 AS排名, 'B' AS t_name T2 JOIN(SELECT @rownum:= 0)tableB的來自R2; )爲T3 GROUP BY ranking' – emaynard