2

我有两个 ID 和日期表,我想按日期对这两个表进行排序,并查看那些顺序不同的 ID

例如 table_1

id   |  date
------------
A       01/01/09
B       02/01/09
C       03/01/09

表_2

id   |  date
------------
A       01/01/09
B       03/01/09
C       02/01/09

并得到结果

 B
 C

现在诚然,我可以通过查询转储订单的结果并对其进行比较,但我想知道是否有一种 SQL-y 方法可以获得相同的结果。

编辑澄清,表格之间的日期不一定相同,它只是用来确定订单

谢谢

4

3 回答 3

3

如果 和 中的日期不同TABLE_1TABLE_2则您必须将两个表加入到它们的等级中。举个例子:

SQL> WITH table_1 AS (
  2     SELECT 'A' ID, DATE '2009-01-01' dt FROM dual UNION ALL
  3     SELECT 'B', DATE '2009-01-02' FROM dual UNION ALL
  4     SELECT 'C', DATE '2009-01-03' FROM dual
  5  ), table_2 AS (
  6     SELECT 'A' ID, DATE '2009-01-01' dt FROM dual UNION ALL
  7     SELECT 'C', DATE '2009-01-02' FROM dual UNION ALL
  8     SELECT 'B', DATE '2009-01-03' FROM dual
  9  )
 10  SELECT t1.ID
 11    FROM (SELECT ID, row_number() over(ORDER BY dt) rn FROM table_1) t1
 12   WHERE (ID, rn) NOT IN (SELECT ID,
 13                                 row_number() over(ORDER BY dt) rn
 14                            FROM table_2);

ID
--
B
C
于 2009-08-07T10:29:14.403 回答
0

不只是加入日期和比较ID的情况相同。这假定 table_1 是主序列。

SELECT table_1.id
FROM
  table_1
INNER JOIN table_2
    on table_1.[date] = table_2.[date]
WHERE table_1.id <> table_2.id
ORDER BY table_1.id
于 2009-08-07T10:01:56.157 回答
0

select id from table_1, table_2 where table_1.id = table_2.id and table_1.date <> table_2.date

于 2009-08-07T10:03:20.540 回答