2013-03-29 156 views
0

你可以給我提供一些東西,如何推兩個不同的表,但具有相同的結構,我的意思是所有的信息都是一樣的,只是表名是不同的,mailingsmailings_archive。 爲一個表它是確定Mysql從兩個不同的表中選擇相同的結構

$query = sprintf("SELECT * FROM %smailings WHERE hidden=0 AND draft=1 %sORDER BY category_id, mailing_segment", $this->dbprefix, $language); 

$this->mailings[] = array('id' => $row->id, 
             'mailing_naam' => $row->mailing_naam, 
             'mailing_subject' => $row->mailing_subject, 
             'mailing_from_name' => $row->mailing_from_name, 
             'mailing_bounceaddress' => $row->mailing_bounceaddress, 
             'mailing_body' => $row->mailing_body, 
             'mailing_status' => $row->mailing_status, 
             'mailing_segment' => $row->mailing_segment, 
             'mailing_total_subscribers' => $row->mailing_total_subscribers, 
             'mailing_total_sent' => $row->mailing_total_sent, 
             'category_id' => $row->category_id, 
             'utm_campaign' => $row->utm_campaign, 
             'language' => $row->language); 
     }      

現在看起來是這樣的,怎麼把這個數組中,另一個表中的數據?不要忘記,每個領域是相同的,只是表名稱不同。

回答

4
(SELECT * FROM %smailings WHERE hidden=0 AND draft=1 %sORDER BY category_id, mailing_segment) 
UNION 
(SELECT * FROM another_table WHERE hidden=0 AND draft=1 %sORDER BY category_id, mailing_segment) 

(select * from table1) 
union 
(select * from table2) 

但是,這將導致一個無序的結果集,即使你把「排序依據」每個請求的內部,但是這一次可能是最快的。

如果你需要擁有的一切表之間的排序(1 .... 8),那麼這是一個語法:

select * from table1 
union 
select * from table2 order by id 

如果你想有兩個單獨的命令(如4 ... 8從一個表,1..4從另一):

select * from 
(select * from test1 order by id asc) as t1 
union all 
(select * from test2 order by id asc); 
+0

謝謝,這很好回答 –

1

使用union方法..

試查詢:選擇1聯合選擇2

相關問題