sql - 比较两个表

时间:2012-10-04 13:47:08

标签: sql

我有两个表,table1table2。它们都有相同的列program_idscheduled_timetimezone_id

我想检索具有相同program_idtimezone_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_idscheduled_timetimezone_id的行。

有人可以修复sql吗?

感谢。

3 个答案:

答案 0 :(得分: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;
)

答案 1 :(得分: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 JOINprogram_id)上执行timezone_id并确保scheduled_time列具有不同的值。

另外:在SQL中使用<>运算符 - !=用于C#/ VB.NET ....

答案 2 :(得分: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