2016-03-05 79 views
0

此作品加入複雜的MySQL查詢:從同一個表

SELECT * 
FROM (SELECT 
SUM(count) AS valid, 
SUBSTRING_INDEX(REPLACE(REPLACE(REPLACE(ref_url,'http://',''),'https://',''),'www.',''),'/',1) AS sDomain 
FROM ref_records 
WHERE user_id = 9507 
GROUP BY sDomain 
ORDER BY 1 DESC) 
as A 

INNER JOIN 

(SELECT 
SUM(invalid) AS invalid, 
SUBSTRING_INDEX(REPLACE(REPLACE(REPLACE(ref_url,'http://',''),'https://',''),'www.',''),'/',1) AS sDomain 
FROM ref_records 
WHERE user_id = 9507 
GROUP BY sDomain 
ORDER BY 1 DESC) 
as B 


on A.sDomain=B.sDomain 

然而,如下表輸出:

現在我想同樣的結果進行合併如下:

sDomain | valid | invalid 

任何想法?謝謝。

+0

試圖與工會,但它只是總結了兩個和結果查詢......不是我想要的東西 – Ivan

回答

2

您可以在您的選擇中選擇獨特的項目和其他項目的總和,然後使用按組聲明。

檢查下面的語句:

select A.sDomain ,sum(valid) as valid, sum(invalid) 
from A INNER JOIN B ON A.sDomain=B.sDomain 
group By A.sDomain 
+0

我不知道如何將其應用到我的查詢因爲你可以在例子中看到和數很複雜。 – Ivan

+0

你只要更換。 {SELECT * FROM } 與 {SELECT A.sDomain,有效,無效 FROM }在查詢 ,你會得到你想要的結果。 – Hamid

+0

太棒了,那就是訣竅!謝啦! +1 – Ivan