有沒有一種方法可以在不選擇不同值的情況下使用相交?像INTERSECT ALL
。在SQL Server中相交
例如,考慮表A和B
A --> 1, 1, 1, 2, 3, 4
B --> 1, 1, 2
會導致
Result --> 1, 1, 2
編輯
我覺得這link很好地解釋了我想要的東西。這other link也有意思瞭解這個問題。或者this other link更好地解釋事件。
編輯2
假設表:
表A
╔════════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠════════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ House ║ 10 ║ 1 ║ NO ║ -5 ║
║ Monkey ║ 15 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚════════╩════╩═══╩════╩════╝
表B
╔═════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠═════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 15 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚═════╩════╩═══╩════╩════╝
爲交叉(select * from A INTERSECT select * from B
)答案將是:
╔═════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠═════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚═════╩════╩═══╩════╩════╝
因爲它只需要不同的值。我想正在共同行,就像:
╔═════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠═════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚═════╩════╩═══╩════╩════╝
觀察我不需要知道我必須連接(連接位置,就像INTERSECT
)。該ID將是使用所有列構建的東西(表格之間的鏈接都是基於其位置的列)。
HUH?爲什麼結果對於1有兩個值?這不是INTERSECT的意思。它旨在返回兩者中存在的不同值。你需要的東西不是相交才能工作。 – 2014-09-18 20:34:14
這是一個例子。表格的連接是位置的。就像十字路口。 – Nizam 2014-09-18 20:58:31
@SeanLange - Ansi SQL有一個'INTERSECT ALL'和一個'EXCEPT ALL'。 – 2014-09-19 08:03:24