我有两个表,table1
和table2
。它们都有相同的列program_id
,scheduled_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_time
和timezone_id
的行。
有人可以修复sql吗?
感谢。
答案 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 JOIN
和program_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