2017-04-04 110 views
-3

我想從兩個不同的表中使用一個查詢提取兩個相同數據類型的列。注:兩個表中的科目屬性長度都不相同。聯盟不能在這裏工作,因爲列的數量(實際上)在兩個表中都不相同。加入多個表的列

CREATE TABLE IF NOT EXISTS `mydb`.`TABLE_A` (
    `ID_TABLE_A` INT NOT NULL AUTO_INCREMENT, 
    `ACCOUNT` VARCHAR(5) NULL, 
    `SALES` INT NULL, 
    PRIMARY KEY (`ID_TABLE_A`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `mydb`.`TABLE_B` (
    `ID_TABLE_B` INT NOT NULL AUTO_INCREMENT, 
    `ACOUNT` VARCHAR(9) NULL, 
    `SALES` INT NULL, 
    PRIMARY KEY (`ID_TABLE_B`)) 
ENGINE = InnoDB; 

要求:(我知道這不可能是正確的,但只是爲了演示的部分圖片)

SELECT 
    ACCOUNTS, 
    SALES 
FROM 
TABLE_A, TABLE_B 

結果:

--------------- 
|accounts|sales| 
| 2854 |52500 | 
| 6584 |54645 | 
| 54782| 5624 | 
| 58496|46259 | 
| 56958| 6528 | 
--------------- 
+0

請重新編寫您的CREATE TABLE語句,使它們全都是代碼,並且每行放置一個屬性 –

+0

「實際上」列數是不同的,但在您的示例中它們不是。無論如何,你可能需要一個臨時表 - 這是非常瘋狂的用例。 –

+0

@SteveHarris,表的實際數量是5;列數從30到40不等。爲了避免混淆[不想列出不相關的信息],我希望得到一個幫助,在那裏我感覺卡住了。儘管感謝您的幫助。 – Athar

回答

1

如果你想要兩個表的聯合不兼容工會,那麼讓他們工會兼容:

(SELECT 
    ACCOUNTS, 
    SALES 
FROM 
TABLE_A) UNION ALL 
(SELECT 
    ACCOUNTS, 
    SALES 
FROM TABLE_B) 

我把UNION ALL的假設,你想保持重複。如果您希望輸出沒有任何重複,請將其替換爲UNION

+0

工作就像一個魅力曼。感謝您的及時幫助。 – Athar