1

同じ列名と同じ複合主キーを持つ 2 つのテーブルがあります。両方のテーブルの複合主キーは id + year です。テーブル T1 のデータを常に使用したいのですが、テーブル T2 の ID + 年が存在する場合、それはテーブル T1 にはありません。それも返してもらいたいです。

これが私のテーブルです

T1

id  |  year  |  cost
----+--------+-------
1   |  2012  |  1.01
2   |  2012  |  1.02
2   |  2013  |  1.03

T2

id  |  year  |  cost
----+--------+-------
1   |  2012  |  2.01
2   |  2013  |  2.02
3   |  2013  |  2.03

私は手に入れたい:

id  |  year  |  cost
----+--------+-------
1   |  2012  |  1.01
2   |  2013  |  1.02
2   |  2013  |  1.03
3   |  2013  |  2.03

これは明らかに間違っていますが、私は試しました:

SELECT
  T1.id,
  T1.year,
  T1.cost
FROM employee_cost AS T1
  INNER JOIN (select
        employee_cost_historic.id,
        employee_cost_historic.year,
        employee_cost_historic.cost
          from employee_cost_historic) AS T2
    ON T1.id = T2.id
      AND T1.year = T2.year
4

2 に答える 2

2

または、LEFT JOIN と IS NULL を使用した別のオプション:

SELECT T1.Id, T1.Year, T1.Code
FROM T1 
UNION
SELECT T2.Id, T2.Year, T2.Code
FROM T2
  LEFT JOIN T1 ON T1.Id = T2.Id AND T1.Year = T2.Year
WHERE T1.Id IS NULL

幸運を。

于 2013-01-31T19:28:14.953 に答える
1

でこれを行うことができますunion all

select id, YEAR, cost
from t2
union all
select id, YEAR, cost
from t2
where not exists (select 1 from t1 where t1.id = t2.id and t1.year = t2.year)
于 2013-01-31T19:23:24.223 に答える