2015-07-03 72 views
1

我有此查詢如何將多列數據合併爲一個? [鄰接表模型查詢]

SELECT t1.categoryid AS lev1, t2.categoryid as lev2, t3.categoryid as lev3, t4.categoryid as lev4 
FROM category AS t1 
LEFT JOIN category AS t2 ON t2.parent = t1.categoryid 
LEFT JOIN category AS t3 ON t3.parent = t2.categoryid 
LEFT JOIN category AS t4 ON t4.parent = t3.categoryid 
WHERE t1.categoryid = 4149418031; 

這是怎麼造成像

enter image description here

看起來你可以看到它返回四列。 我想將所有四個不同的數據合併成一列。

我看了類似的問題,但沒有一個在他們的查詢中留下了聯接。 我知道它可以使用union但我掙扎。

謝謝。

+0

你是什麼意思不同的數據? categoryid 1,2,3,4的不同組合您可以將原始查詢嵌套在另一個查詢中,在該查詢中,您從(/ *內部查詢* /)中選擇DISTINCT *。 – user3538411

+0

@ user3538411有四列可能包含重複數據。我想要將所有列中的不同數據合併爲一個。我用查詢結果更新了問題。看一看。 – Pranav

+0

嗨Pranav。你是否能夠解決這個問題。我也面臨着將查詢從「with」轉換爲mysql版本的問題。 –

回答

0

正如您所說,您可以在查詢結果上使用UNION。在剩下的答案中,我將向您展示一個使用CTE的解決方案,CTE是許多系統中可用的標準SQL語法,但不幸的是,不在MySQL中。但是,要將這個查詢轉換爲MySQL,你可以看看下面的答案:How do you use the "WITH" clause in MySQL?

WITH query AS (
    SELECT t1.categoryid AS lev1, t2.categoryid as lev2, t3.categoryid as lev3, t4.categoryid as lev4 
    FROM category AS t1 
    LEFT JOIN category AS t2 ON t2.parent = t1.categoryid 
    LEFT JOIN category AS t3 ON t3.parent = t2.categoryid 
    LEFT JOIN category AS t4 ON t4.parent = t3.categoryid 
    WHERE t1.categoryid = 4149418031) 
SELECT lev1 AS category_value FROM query 
    UNION 
SELECT lev2 AS category_value FROM query 
    UNION 
SELECT lev3 AS category_value FROM query 
    UNION 
SELECT lev4 AS category_value FROM query; 
+0

感謝您的回答! 雖然我努力轉換,但我會考慮它。 再次感謝。 – Pranav