2010-07-07 37 views
1

我有兩個查詢,查詢同一個表,但基於不同的參數兩個MySQL查詢,加入基於參數

然後我需要玉米粥這兩個結果集在一起基於certian參數

//get initial text 
Q1 
SELECT 
campaign_id AS campaign_id, 
from_number AS mobile, 
received_msg AS join_txt, 
date_received AS join_txt_date 
FROM received_txts WHERE action_id = 4 AND msg_link_id = id; 

//get final text 
Q2 
SELECT 
campaign_id AS campaign_id, 
from_number AS mobile, 
received_msg AS final_txt, 
date_received AS final_txt_date 
FROM received_txts WHERE action_id = 4 AND msg_complete_id = id; 

/join these two queries on 
Q2.msg_link_id = Q1.id AND Q2.campaign_id = Q1.campaign_id AND Q2.from_number = Q1.from_number 

回答

2
SELECT 
    Q1.campaign_id AS campaign_id, 
    Q1.from_number AS mobile, 
    Q1.received_msg AS join_txt, 
    Q1.date_received AS join_txt_date, 
    Q2.received_msg AS final_txt, 
    Q2.date_received AS final_txt_date 
FROM received_txts Q1 JOIN received_txts Q2 
    ON Q2.msg_link_id = Q1.id 
    AND Q2.campaign_id = Q1.campaign_id 
    AND Q2.from_number = Q1.from_number 
WHERE Q1.action_id = 4 
    AND Q2.action_id = 4 
    AND Q1.msg_link_id = Q2.id 
    AND Q2.msg_complete_id = Q2.id 
+0

我會在action_id = 4上使用子查詢,但除此之外,我會與此一起去。任何原因你沒有? – 2010-07-07 05:15:57

+0

子查詢?我不知道,爲什麼?會更快嗎? – Amadan 2010-07-07 06:59:38

0

使用虛擬表:

SELECT * 
FROM table AS t1 
JOIN (select ..) AS t2 
ON (t1.foo = t2.foo) 
+0

我試圖做 SELECT t1.campaign_id \t \t AS CAMPAIGN_ID, t1.from_number \t \t AS移動, t1.received_msg \t \t AS join_txt, t1.date_received \t AS join_txt_date, t2.final_txt \t \t AS final_txt, t2.final_txt_date \t AS final_txt_date FROM received_txts爲T1 (下面部分2) – Hailwood 2010-07-07 04:28:25

+0

JOIN( SELECT ID \t \t爲ID, msg_complete_id \t AS msg_complete_id, msg_link_id \t AS msg_link_id, CAMPAIGN_ID \t AS CAMPAIGN_ID, FROM_NUMBER \t AS移動, received_txt \t AS final_txt, \t date_received \t AS final_txt_date \t WHERE msg_complete_id = ID )爲T2 ON(t1.msg_link_id = t1.id AND t2.msg_link_id = t1.id AND t2.campaign_id = t1.campaign_id AND t2.from_number = t1.from_number AND t2。 ) 但我得到: 您的SQL語法錯誤;在附近'msg_complete_id = id )AS t2 ON(t1.msg_link_id = t1.id and t2.msg_li' – Hailwood 2010-07-07 04:29:33