2011-08-17 58 views
1

我有10個記錄很多的表。所有表格都有「日期」欄。我想從日期中提取表格中的所有數據。 我可以做10個查詢SELECT * FROM Table1 WHERE Date = dd/MM/yyyy等等,但我只想做一個帶有「多選」的查詢。我怎樣才能做到這一點? 我不熟悉SQL語言。編輯:我正在與Microsoft Access和MySQL(兩個不同的桌面應用程序,但同樣的問題)。 表有不同的字段(日期都是共同的),所以使用UNION並不好。多個SQL SELECT

+2

你能更具體嗎?表結構? DBMS? –

+0

你想要選擇什麼?我們需要更多信息。你有Table1和Table2,...,每個都有一個Date列,並且你想從他們中選擇Date匹配的數據嗎?但這些表格是如何相關的? –

+0

如果你不使用'UNION',那麼把這個值放在一個表中,然後把你的10個表加入到這個表中。但爲什麼不使用'UNION'? – onedaywhen

回答

2
SELECT * 
FROM table1, 
    table2 
WHERE table1.date = 'somedate' 
    AND table2.date = 'somedate' 
+0

如果table2沒有任何有關日期的記錄,但是table1會這樣工作,那麼這個工作就會工作嗎? –

+0

然後刪除'AND table2.date ='somedate' – Eric

+0

我已經認爲這...我用它。 – Alph

0

查看UNION運算符以包含來自多個SELECT語句的數據。

0

你的問題不是很清楚。根據我的理解,您可以使用Union SQL語句來組合您的查詢並將其作爲單個查詢。但是如果你想在不同的表中查詢不同的日期,你只能使用多個查詢。

0

如果我正確理解你的問題,你想從表中獲取數據,其中 所有10個表包含字段的相同的列表,你可以使用

SELECT * FROM Table1 WHERE Date=dd/MM/yyyy 
UNION ALL 
SELECT * FROM Table2 WHERE Date=dd/MM/yyyy 
UNION ALL  
... 
UNION ALL  
SELECT * FROM Table10 WHERE Date=dd/MM/yyyy 
UNION ALL 

如果場是不同的,你需要在結果集中添加要獲取的字段:

SELECT field1, field2 FROM Table1 WHERE Date=dd/MM/yyyy 
UNION ALL 
SELECT field1, field2 FROM Table2 WHERE Date=dd/MM/yyyy 
UNION ALL  
... 
UNION ALL  
SELECT field1, field2 FROM Table10 WHERE Date=dd/MM/yyyy 
UNION ALL 
0

使用Union時請注意性能問題。 - 確保運行一些測試,比較兩種方法的查詢時間。

根據您的數據庫軟件,您也可以使用存儲過程。

還要檢查每個表中的日期列是否已編制索引。