2012-01-08 5 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つのクエリ以下個別にチェックするためにどのように多くの最大行I取得し、それが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 | 
+----------+ 

を超えてはならないの下から必要があります誰もが、私は私の選択した日付と時刻の2つの契約の労働組合を取得するには、JOINの編集方法を提案することができます。

答えて

2

同じテーブルから結果を取得する場合は、実際には結合を行う必要はありません。これを行うことができます:

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

ありがとうございます、確かに、私は同じテーブルの結果を探しています – itcplpl

0

はい、2つのテーブルを結合するとどうなりますか。 1行ごとに日付と時刻(結合条件)が一致するため、983 x 175 = 172025の行の積が得られます。結合されている2つのテーブルが実際には同じテーブルのサブセットであることは重要ではありません。

関連する問題