1

私は2つのテーブルを持っていtable1ますtable2. どちらも同じ列 、program_idscheduled_timeおよび を持っていますtimezone_id

program_idと が同じでtimezone_id、 とは異なる行を取得scheduled_timeしたいtable1

だからここに私が試したSQLがあります:

select t1.* 
from table1 t1, table2 t2 
where t1.program_id = t2.program_id 
  and t1.timezone_id = t2.timezone_id 
  and t1.scheduled_time != t2.scheduled_time;

program_idしかし、同じ, scheduled_timeandを持つ行がまだ表示されますtimezone_id

誰かがSQLを修正できますか?

ありがとう。

4

3 に答える 3

2

サブクエリを使用してみてください:

select t1.* 
from table1 t1
where exists
(
  select 1
  from table2 t2
  where t1.program_id = t2.program_id 
  and t1.timezone_id = t2.timezone_id 
  and t1.scheduled_time != t2.scheduled_time;
)
于 2012-10-04T13:50:26.587 に答える
2

次のようなことを試してください:

SELECT
    t1.* 
FROM
    table1 t1
INNER JOIN
    table2 t2 ON t1.program_id = t2.program_id AND t1.timezone_id = t2.timezone_id 
WHERE
     t1.scheduled_time <> t2.scheduled_time

基本的INNER JOINに、共通の列 (program_idおよびtimezone_id) に対して を実行し、scheduled_time列の値が異なることを確認します。

また、SQL では<>演算子 -!=は C# / VB.NET 用です ....

于 2012-10-04T13:50:54.960 に答える
0

これはうまくいくはずです。を使用する代わりに、常に列リストを指定することをお勧めしSELECT *ます。

SELECT t1.program_id, t1.scheduled_time, t1.timezone_id
FROM table1 t1
INNER JOIN table2 t2 ON 
    t2.program_id = t1.program_id AND
    t2.timezone_id = t1.timezone_id
WHERE
    t2.scheduled_time <> t1.scheduled_time
于 2012-10-04T13:51:27.147 に答える