2017-05-04 60 views
0

我有2列與不同列數的意見。其中1個視圖已經與另一個視圖聯繫在一起,這就是爲什麼它有附加列。比較2列與不同列數的意見

第一個視圖有113個記錄(視圖2),而更新的視圖(視圖1)有130個列。我想查看查看1 中額外記錄的數量。

View 1  View 2 
A|B|C|D|E A|B|C 
1 2 3 4 5 1 2 3 
1 2 3 7 8   
3 2 1 4 5 3 2 1 
3 2 1 7 8 

預期的結果:

1 2 3 7 8 
3 2 1 7 8 

感謝。

+0

行或列? –

+2

添加一些示例數據並顯示預期結果。 (以及格式化文本。) – jarlh

+0

左連接得到結果怎麼樣? –

回答

0

您可以通過使用「不」獲得額外的記錄或「不存在」條件

select * from view1 m where not exists (
select 1 from view2 u where (m.a=u.a and m.b=u.b and m.c=u.c) 

你可以改變這些條件按您的要求

隨着LEFT JOIN也將獲得所需要的結果

select m.* from view1 m left join view2 u 
(m.a=u.a and m.b=u.b and m.c=u.c) 
where u.a is null and u.b is null and u.c is null 
+0

where子句應該是m.a = u.a? – qwerty

+0

@Rahul我改變了它 – Rams

0

您可能會重構您的數據庫架構和數據邏輯。

但爲了解決您的怪異要求,您可以:

http://sqlfiddle.com/#!9/cf2c50/2

SELECT t.a, t.b, t.c, t.d, t.e 
FROM (
SELECT v1.*, IF(@idx = concat(v1.a,v1.b,v1.c),1,0) `filter`,@idx := concat(v1.a,v1.b,v1.c) 
FROM v1 
INNER JOIN v2 
ON v1.a=v2.a AND v1.b=v2.b AND v1.c=v2.c 
ORDER BY v1.a,v1.b,v1.c 
) t 
WHERE t.`filter`=1; 

這不是查詢性能最好的例子,但它應該返回預期的結果。