2012-01-08 94 views
0

我正在嘗試使用JOIN運行查詢。 所以,我寫了下面的:使用SQL JOIN進行數據聯合

SELECT * FROM (SELECT trade_date, trade_time, price, contract_name 
       FROM test 
       WHERE contract_name="Z10" 
       AND trade_date="2010-12-01" 
       AND trade_time="0900") 
AS A JOIN (SELECT trade_date, trade_time, price, contract_name 
      FROM test 
      WHERE contract_name="H11" 
      AND trade_date="2010-12-01" 
      AND trade_time="0900") 
AS B ON (A.trade_date=B.trade_date 
AND A.trade_time=B.trade_time); 

它運行良好,但它返回大量的行:

+------------+------------+-------------+---------------+------------+------------+-------------+---------------+ 
172025 rows in set (0.31 sec) 

所以我跑了低於2個查詢逐個檢查有多少最大行數我應該得到的,並且從下面的它不應該超過1000

mysql> select count(*) 
     from test 
     where contract_name="Z10" 
     and trade_date="2010-12-01" 
     and trade_time="0900"; 
+----------+ 
| count(*) | 
+----------+ 
| 983 | 
+----------+ 
1 row in set (0.02 sec) 

mysql> select count(*) 
     from test 
     where contract_name="H11" 
     and trade_date="2010-12-01" 
     and trade_time="0900"; 
+----------+ 
| count(*) | 
+----------+ 
| 175 | 
+----------+ 

任何人都可以建議我如何編輯我的JOIN獲得所選擇的日期和時間2個合同的工會。

回答

2

如果您從同一個表獲得結果,則實際上不需要進行連接。你可以這樣做:

select count(*) 
from test 
where contract_name in ("H11","z10") 
    and trade_date="2010-12-01" 
    and trade_time="0900"; 
+0

謝謝,的確,我正在從同一張表中查找結果 – itcplpl 2012-01-08 04:31:29

0

是的,當你將兩個表連接在一起時會發生什麼。由於日期和時間(您的連接標準)匹配每一行,因此您將得到行的乘積 - 983 x 175 = 172025.連接的兩個表實際上是同一個表的子集並不重要。