2014-03-27 51 views
0

我需要與限制總從2個表得到的結果10得到2代表的結果與10的總限額


如1:
如果我TABLE_1和TABLE_2有15條記錄,我的結果在20:

SELECT * FROM table_1 limit 10 
UNION ALL 
SELECT * FROM table_2 limit 10 


例如2:
TABLE_1如果我有3條記錄和記錄TABLE_2 20,我的結果將是8:

SELECT * FROM table_1 limit 5 
UNION ALL 
SELECT * FROM table_2 limit 5 



需要內選擇包括SELECT ... UNION ALL SELECT ...」與限10 類似:

select * from 
(Select * FROM tbl_1) T1, 
UNION ALL 
(Select * FROM tbl_2) T2, 
limit 10 

這個例子不工作,只是爲了舉例說明我需要怎麼去查詢
是一個真實的案例...有人可以伸出援手嗎?
謝謝

+0

看我爲如何將內部 '聯盟' 對查詢進行排序修改答案。 –

+0

謝謝,很高興你發現它有用 –

+0

任何幫助總是很好。我對SQL知之甚少,有時很難表達這個問題。 –

回答

1

當使用聯合時,最好單獨選擇列以確保它們在查詢之間匹配。在第一個查詢中設置列別名也是值得的,以便您可以在查詢的其他部分中唯一地引用它們。

我已經修改了這個答案,以演示爲每個單獨查詢選擇的「排序鍵」的使用,然後由控制顯示哪些列的外部查詢應用。他們顯示的順序是什麼。

我還提供了一個SQLFiddle...,您可以用它來「玩」它。

測試例如:

SELECT report.title 
FROM 
(SELECT title AS title, 
     'Q01' AS query_identifier, 
     id  AS sort_key_01,   
     0  AS sort_key_02 
FROM parents 
UNION 
SELECT child_text, 
     'Q02', 
     parent_id, 
     id FROM children 
) report 
ORDER BY 
     report.query_identifier, 
     report.sort_key_01, 
     report.sort_key_02 

結果:

first parent title 
second parent title 
third parent title 
first parent first child 
first parent second child 
second parent first child 
second parent second child 
third parent first child 
third parent second child 
third parent third child 
+0

謝謝...我需要選擇每個有訂單,當我使用不改變順序 –

0

應該象下面這樣:

(SELECT * FROM table_1) 
UNION ALL 
(SELECT * FROM table_2) 
LIMIT 10 

使用ORDER BY或LIMIT子句來進行排序或限制整個UNION結果,圓括號個人SELECT語句完成訂單交易。 BY或LIMIT後最後一個

+0

當我使用'ORDER BY id'時,asc順序不會改變。順序不按這個順序工作? –