[英]SQL server 2012 select issues
我有一個名為X的數據庫。在此數據庫中,我有兩個表A和B。表A有89行,表b有49行。當我執行兩個獨立的SELECT結果時,ir正確,但是當我混合並嘗試執行一個select時在兩個表中,我都返回了一些神秘的行。
例如:
SELECT * FROM A (89 rows, that's correct)
SELECT * FROM B (49 rows, that's correct)
SELECT * FROM A, B (4361 rows, and information there is repeating and duplicating)
謝謝!
我認為您實際上正在尋找
SELECT * FROM A
UNION ALL
SELECT * FROM B
我認為您希望兩個表的結果都在一個結果集中,而這樣做的方法是在SELECT語句之間使用UNION。
請注意,這僅在A和B中的列在數據類型和表定義方面相同的情況下有效。
表A中列#1的數據類型必須與表B中列#1的數據類型相同,依此類推。 (僅在使用SELECT *
有效)
您還可以指定列,以便數據類型按順序匹配。
SELECT col1, col3, col2 from A
UNION ALL
SELECT col2, col1, col3 from B
(如果來自A的col1與來自B的col2具有相同的數據類型,等等)
您的最后一個查詢正在執行的是CARTESIAN PRODUCT。
表A中的89行乘以表B中的49行=結果為4361行
您試圖按CARTESIAN PRODUCT進行選擇。
嘗試這個
SELECT * FROM A
UNION ALL // It will select all 89 + 49 records from both table
SELECT * FROM B
要么:
SELECT * FROM A
UNION // It will select all records from both table without duplicate
SELECT * FROM B
您使用的語法等效於進行CROSS JOIN-即它將兩個表中的所有行組合在一起-這將返回2個表之間的所有行組合-在這種情況下為49 * 89。
您能否闡明您期望返回的數據?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.