Tìm cách easist/có khả năng mở rộng nhất để thực hiện "sự khác biệt" trong SQL Server xem bên dưới. Sự khác biệt của Máy chủ SQL (đối diện với giao lộ)
Nếu bạn không thể nói từ hình ảnh tôi đang tìm mọi thứ không có trong giao lộ.
Tôi đã thấy một cách để làm điều đó:
select * from (
(select 'test1' as a, 1 as b)
union all
(select 'test2' as a , 2 as b union all select 'test1' as a , 1 as b)
)un group by a,b having count(1)=1
Nhưng tôi sợ những gì sẽ xảy ra nếu tôi sử dụng hai bộ lớn (i sẽ không được truy vấn từ chọn '' tuyên bố không đổi, truy vấn của tôi sẽ được kéo từ các bảng thực)
EDIT:.
giải pháp có thể xảy ra ...
drop table #temp_a;
drop table #temp_b;
go
select * into #temp_a from (
select 1 as num, 'String' as two, 'int'as three, 'purple' as four union all
select 2 as num, 'dog' as two, 'int'as three, 'purple' as four union all
select 3 as num, 'dog' as two, 'int'as three, 'cat' as four) a
select * into #temp_b from (
select 1 as num, 'String' as two, 'decimal'as three, 'purple' as four union all
select 2 as num, 'dog' as two, 'int'as three, 'purple' as four union all
select 3 as num, 'dog' as two, 'int'as three, 'dog' as four) b
SELECT IsNull(a.num, b.num) A,IsNull(a.two, b.two) B, IsNull(a.three, b.three) C,
IsNull(a.four, b.four) D
FROM #temp_a a
FULL OUTER JOIN #temp_b b ON (a.num=b.num AND a.two=b.two and a.three=b.three and a.four=b.four)
WHERE (a.num is null or b.num is null )
KẾT QUẢ:
1 chuỗi int tím
3 con chó int mèo
1 Chuỗi Tháng Mười Hai tím
3 con chó int chó
không phần IsNull đạt được gì? Nó chỉ là một phương tiện để "hiển thị" những gì còn thiếu? – Nix
Đối với các hàng chỉ có một bản ghi trong một trong các bảng (những cái bạn muốn) sẽ có một giá trị rỗng trong một bảng hoặc bảng kia. Ví dụ, Bảng 1..A sẽ là null hoặc Bảng2.A sẽ là null cho mỗi hàng. Isnull lấy giá trị từ phía nào có giá trị. – JohnFx