2017-06-01 21 views
-1

表A中包含SQL加入2個表來獲取所有列

cola1 | cola2 | cola3 | colAB 
----------------------------------- 
a1   a2  a3  1 
a11   a22  a33  1 

表B包含

colb1 | colb2 | colb3 | colAB 
----------------------------------- 
b1   b2  b3  1 
b11   b22  b33  1 

我想結果是這樣的:

cola1 | cola2 | cola3 | colb1 | colb2 | colb3 | colAB 
---------------------------------------------------------- 
    a1   a2  a3  b1  b2  b3  1 
    a11  a22  a33 b11  b22  b33  1 

如何獲得呢?

感謝

+2

您的colAB值是否正確? –

+0

哪個數據庫?行順序是以某種方式定義的,因爲您正在識別第二行。 – wumpz

+0

這個問題真的可以從一些額外的細節中受益; ColAB對每個表格代表什麼?這兩個值是否在這兩個表之間共享,以便它們可以加入?你使用的是什麼數據庫技術?可能有很多方法可能有助於回答這個問題,但是沒有更多細節,很難給出足夠的答案。 –

回答

0
SELECT [fields you want] 
FROM TableA 
JOIN TableB ON TableA.colAB=TableB.colAB; 

SQL JOIN

+0

只使用顯式連接。 – Degan

+0

這不是一個正確的JOIN,它會產生4行 – DaniDev

+0

@a_horse_with_no_name - 編輯 – itay

0
select cola1, cola2, cola3, colb1, colb2, colb3, a.colAB 
from TableA a 
inner join TableB b on a.colAB = b.colAB 

編輯解讀:這是不正確的:這將導致四大行也,每對其他答案的評論。

0

你的問題是,你需要找出這兩個表是如何相關的,因爲乍一看他們不是。這是一個業務需求問題,而不是語法問題。在查詢數據之前,您需要了解數據的含義。看起來好像有可能這種關係是需要從兩個表中的col1中刪除第一個字符並加入。基於所提供的非常有限的一組數據,這是一種膚淺的猜測。你需要了解這些領域的污點以及它們應該如何相互關聯。這意味着你需要問問生意而不是我們。

如果我的猜測是正確的,那麼你需要修復你的數據模型。必須刪除字符才能執行連接是無效的。如果數據應該是相關的,那麼你必須在你的一個表中包含一個外鍵字段。如果這些表(或者最終會是)大表,這尤其如此。

如果確實需要去掉前導字符,則可以通過創建計算字段來變換數據。在這種情況下,您需要非常確定,總是有主角,如果有多個包含多個單個數字的角色需要剝離,您需要執行哪些操作。這可能會變得相當複雜,但更好的做法是一次創建一個新字段加入,以便每次查詢。此時修復數據模型不是可選的,除非這是一次性數據轉換,不會再發生。