1

我有两张桌子,table1table2。它们都有相同的列program_idscheduled_timetimezone_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_timetimezone_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_idtimezone_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 回答